Braimik

За одно нажатие кнопки на выход поступает 15 тактовых импульсов

12 сообщений в этой теме

Braimik    6

Необходима помощь в реализации . НА входе разрешающий сигнал то бишь нажатие однократное кнопки. и тактовый сигнал, на выходе логическая единица пока на выходе идут тактовые импульсы в количестве 15 шт. то есть я нажал, и происходит цикл повторений тактовых импульсов на выходе равных тактовой сигналу. и одновременно логическая единица которая по времени столько же сколько и тактовые импульсы пока они не закончатся. не представляю как это реализовать

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Быстрый заказ печатных плат

Полный цикл производства PCB по низким ценам!

  • x
    мм
Заказать Получить купон на $5.00
v1ct0r    167

вы все таки сначала определитесь

у вас на выходе "1" или 15 тактовых импульсов

или у вас два выхода

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Vascom    598

Да элементарно же делается. Ты напиши модуль, а что не получится - подскажем.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
солар    116

На какой элементной базе собираетесь реализовать сиё устройство?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
colorad    224

триггер  срабатывает от кнопки и выдает "1"   и разрешает работу счетчика до 15 . На 15 импульсе триггер  от счетчика сбрасывается в "0" и запрещает и обнуляет счетчик .  

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Vascom    598
49 минут назад, солар сказал:

На какой элементной базе собираетесь реализовать сиё устройство?

Мы в разделе ПЛИС, так что тут без вариантов.

Реализовывается на Verilog в пару десятков строк.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Braimik    6
Ты напиши модуль, а что не получится - подскажем.

Я только щас дошел до этого модуля, по факту надо около 100 импульсов, вот дальше писать незнаю,
" module step ( clk, instep, outstep)
Input clk, instep;
Output outstep;
Always @( posedge clk)
Begin if " а вот дальше незнаю как писать,
Получается один раз нажал кнопку , и на выходе должно 100 импульсов выйти с такой же частотой как и клок


Отправлено с моего HTC Desire 630 dual sim через Tapatalk

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
солар    116

Ещё через квартал нужно будет по факту N импульсов. Стало быть необходимо на вход установить задатчик количества импульсов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Braimik    6

В коде просто менять это значение и все, Это программа по количеству импульсов все расчитается, и все, далее изменения не будет в ней

Отправлено с моего HTC Desire 630 dual sim через Tapatalk

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Vascom    598

Да элементарная задача же. Попробуй сам, покажи что получилось, а мы подскажем.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Meteor77    10
11 час назад, Braimik сказал:

Я только щас дошел до этого модуля, по факту надо около 100 импульсов, вот дальше писать не знаю,

1) нужен генератор тактов, которые будет считать счетчик (вряд ли там мегагерцы, если для шд (о котором я подумал) - не более 500 Гц.

2) делается детектор фронта для определения нажатия кнопки. Это буквально два последовательных триггера, по их состоянию 01 или 10 в счетчик записывается значение из переключателей (или константа) По другому состоянию 10 или 01 разрешается работа счетчика на вычитание.

3) собственно сам счетчик, который ждет когда в него запишут ненулевое значение и считает до нуля. После очистки - ждет запись.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Vascom    598

Например можно сделать вот так (число импульсов на выходе задаётся параметром CNT_VAL не более 127, но можно завести и порт для задания на лету):

module pulse_sequence (
    clk,
    rstn,
    start,

    p_seq
);

//Set number of impulses
parameter CNT_VAL = 7'd11;

//Ports
input   clk;
input   rstn;
input   start;
output  p_seq;

//Regs and wires
reg [7:0]   cnt;
wire        cnt_stop;
reg [1:0]   start_d;
wire        start_en;

//Detecting rise front of START signal
always @(posedge clk)
if (!rstn)
    start_d <= 2'b0;
else
    start_d <= {start_d[0],start};

assign start_en = start_d[0] & (~start_d[1]);

//Down counter
assign cnt_en = |cnt;

always @(posedge clk)
if (!rstn)
    cnt <= 8'b0;
else if(start_en)
    cnt <= CNT_VAL*2;
else if(cnt_en)
    cnt <= cnt - 7'b1;

//Output impulses
assign p_seq = cnt[0];

endmodule

И тестбенч к нему:

`timescale 1ns/1ps

module test();

reg clk;
reg rstn;
reg start;
wire p_seq;

initial
begin
    clk     = 0;
    rstn    = 0;
    start   = 0;
end

always
#10 clk= ~clk;


pulse_sequence pulse_sequence_uut(
    .clk    (clk),
    .rstn   (rstn),
    .start  (start),

    .p_seq  (p_seq)
    );

integer i;

initial
begin
$dumpfile("out.vcd");
$dumpvars(-1, test);

rstn <= 0;

@(negedge clk);
rstn <= 1;
for(i = 0; i<3; i = i+1) @(posedge clk);
#15;
start <= 1;
for(i = 0; i<3; i = i+1) @(posedge clk);
start <= 0;
for(i = 0; i<300; i = i+1) @(posedge clk);

$finish();
end
endmodule

 

Изменено пользователем Vascom

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Похожие публикации

    • Автор: rekrut1993
      Добрый день всем!
       
      Говорю сразу, что я начинающий разработчик FPGA и опыта огромного нет, а эту задачу мне дали в качестве курсовой работы. Поэтому, заранее говорю спасибо всем откликнувшимся!
      Задача состоит вот в чем:
      Есть FPGA Altera Cyclone IV на которой нет сетевого модуля под Ethernet, но есть сетевой модуль Arduino ENC28J60.
      Стоит задача написания драйвера для взаимодействия сетевого модуля Adruino и ПЛИС через протокол SPI, причем с возможностью отсылать данные(по Ethernet) на плис с компьютера(как я понимаю на стороне компьютера должен быть написан клиент для соединения с модулем Adruino), к примеру, буфер размером 64Кб(Но в идеале размер буфера может регулироваться на стороне клиента) и получения уведомления от ПЛИС о принятии этого буфера. Почитал про протокол SPI, теория понятна. Понятно как это должно работать(на основе двух 8-битовых сдвиговых регистров), понятно , что ПЛИС будет выступать в качестве Master-устройства. а Arduino в качесвте Slave-устройства. Понятно как их подсоединить (4 провода: MISO, MOSI, SCLK и SS(slave select)). Есть так же идея реализовать на стороне ПЛИС(Master-устройство) 3 функции на языке Verilog: 1 - функция инициализации, которая будет говорить модулю Adruino о том, что сейчас будут посылаться данные с компьютера, 2 - функция чтения одного байта с сдвигового регистра ардуино, 3 - функция записи одного байта в сдвиговый регистр ардуино.  Но а что тогда должно быть на стороне Arduino(Slave-устройство)? На каком языке и что нужно там описать? С пониманием небольшие трудности. Так же не понятно как это все должно взаимодействовать с компьютером? Какую библиотеку использовать для отсылки данных на модуль Arduino? Использовать сокеты? Подойдёт ли Boost asio или может что-то другое?

      Подскажите пожалуйста куда мне двигаться дальше и с чего начать вообще.
      Фотографии ПЛИС и сетевого модуля прилагаю.


    • Автор: grigorie
      Нужен срочно спец по плисам, желательно понимающий в СВЧ. Имеются образцы радиодальномеров, которые выдают дальности друг для друга. Мы готовимся сделать новую партию, но некоторые компоненты устарели и уже не выпускаются. Есть описание дальномеров, ТЗ и дополнительные документы. Нужно немного подправить ТЗ, по которому будут выпущены новые радиодальномеры и их надо запрограммировать. Григорий 8-911-196-88-29, принимаю звонки в выходные тоже, gvandri21@gmail.com  СПБ
      TZ_REM.doc
      БРНЗ_РЭМ_РД_1.doc
      Краткое описание дальномеров.doc
    • Автор: MaDiEQ
      При проектировании устройств какие конструкции языка VHDL лучше использовать ?
      1 State machine организовывать как переменную со своим типом state1, state2 ... или можно создать variable state: natural range 0 to (конечное состояние):=0; Какая конструкция будет занимать меньше ресурсов?
      2 Операторы ветвления if else или case?
      3 Если нужен переход по изменению сигнала wait или опять же if?
      4 Как использовать Component / port map? использую только в тестбенче но возможно так вот кодом соединять провода нескольких файлов vhd? хотелось узнать
    • Автор: gena334
      EPM7128S-100. Перед началом програмирования на вкладке Defvice не установил галочку "Enable Jtag Support"
      Выдается сообщение что JTAG не доступен. Подскажите пожалуйста как можно помочь моему горю. Я первый раз прошиваю ПЛИС
    • Автор: Braimik
      Добрый вечер. Задача такая на вход подается сигнал 14разрядный и необходимо после того как он перестал изменятся через определенное количество тактовых импульсов выдать логическую единицу, То есть я регулирую переменный резистор с выхода АЦП приходит 14 разрядный сигнал и как только он перестал меняется через 10 импульсов выдать логическую единицу. как его реализовать?