Перейти к содержанию
    

Структурная схема из кода Verilog

Добрый день всем ! Прошу откликнуться на мой вопрос. Поскольку я только начинающий инженер Verilog HDL, то хотелось бы, чтобы кто-нибудь

из продвинутых подсказал, какая структурная схема соответствует данному коду Verilog. Синтез САПРом не в счёт, но речь вроде идет

о наличии двухступенчатого триггера. Cам модуль описывает фильтр дребезга при нажатии кнопки. Всем спасибо огромное, кто нарисует и объяснит !!!

 

Сам код ниже

`timescale 1ns / 1ps
module BTN_FLTR(
                  input       CLK,
                  input       RST,
                  input       CE,
                  input       BTN_I,
                  output reg  BTN_O = 0,
                  output reg  BTN_CEO = 0
                  );  
                  
reg [1:0] BTN_I_SYNC = 0;
always @(posedge CLK, posedge RST)
   begin
      if (RST)
         BTN_I_SYNC <= 2'b00;
      else
         BTN_I_SYNC <= {BTN_I_SYNC[0], BTN_I};
   end 

   
reg [3:0] CNT = 0;
always @(posedge CLK, posedge RST)
   begin
      if (RST)
         CNT <= 4'b0000;
      else if (BTN_I_SYNC[1]~^BTN_O)
         CNT <= 4'b0000;
      else if (CE)
         CNT <= CNT + 1'b1;
   end
   
   
   
always @(posedge CLK, posedge RST)
   begin
      if (RST)
         BTN_O <= 1'b0;
      else if (&(CNT) & CE)
         BTN_O <= BTN_I_SYNC[1];
   end
   
   
   
always @(posedge CLK, posedge RST)
   begin
      if (RST)
         BTN_CEO <= 1'b0;
      else
         BTN_CEO <= &(CNT) & CE & BTN_I_SYNC[1];
   end
   
endmodule

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


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

Добрый день всем ! Прошу откликнуться на мой вопрос. Поскольку я только начинающий инженер Verilog HDL, то хотелось бы, чтобы кто-нибудь

из продвинутых подсказал, какая структурная схема соответствует данному коду Verilog. Синтез САПРом не в счёт, но речь вроде идет

о наличии двухступенчатого триггера. Cам модуль описывает фильтр дребезга при нажатии кнопки. Всем спасибо огромное, кто нарисует и объяснит !!!

RTL просматровщик Вам в помощь

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


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

Добрый день всем ! Прошу откликнуться на мой вопрос. Поскольку я только начинающий инженер Verilog HDL, то хотелось бы, чтобы кто-нибудь

из продвинутых подсказал, какая структурная схема соответствует данному коду Verilog. Синтез САПРом не в счёт, но речь вроде идет

о наличии двухступенчатого триггера. Cам модуль описывает фильтр дребезга при нажатии кнопки. Всем спасибо огромное, кто нарисует и объяснит !!!

Двухступенчатого триггера здесь нет, тут обычные, с динамическим управлением, которые работают по фронту. В ПЛИС других и не бывает, во всяком случае в подавляющем большинстве случаев.

Схему можно посмотреть через RTL-просмотрщик. Специально для Вас нарисовал в классическом виде, так, конечно, понятнее.

post-78485-1430652899_thumb.jpg

Довольно таки всё просто. Сигнал с кнопки (BTN_I) проходит через два триггера, для подавления метастабильности, и поступает на сброс счётчика, но не на прямую. Сам счётчик запускается командой CE, кто эту команду подаёт непонятно. Счётчик начинает считать, когда достигнет своего максимального состояния (все его разряды в единице) элемент И сидящий на его выходной шине выдаёт "1", которая является командой загрузки в триггер, в триггер загружается текущее состояние кнопки. Выход этого триггера (BTN_O) одновременно является состоянием кнопки с подавленным дребезгом и командой на сброс счётчика. На сброс счётчика поступают два сигнала: этот и с триггера подавления метастабильности (смотри начало), они объединяются через элемент исключающее или с инверсией. Есть ещё выход BTN_CEO, на нём формируется импульс на первом такте единичного состояния сигнала BTN_O.

Цепи синхронизации и асинхронного сброса не рисовал, и так понятно.

В общем ни чего сложного. Рисуем схему и смотрим внимательно что откуда идёт и куда приходит. Потом запускаем симулятор и снова внимательно смотрим.

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


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

Двухступенчатого триггера здесь нет, тут обычные, с динамическим управлением, которые работают по фронту
С динамическим управлением - и есть двухступенчатый D-триггер в его классическом понимании (D-Latch). По фронту данные из первой ступени попадают во вторую, этим обеспечивается динамичность, т.е. работа только по фронту, а не по уровню.

 

В ПЛИС других и не бывает, во всяком случае в подавляющем большинстве случаев.
Если речь идёт о двух каскадах триггеров с динамическим управлением, то такие в ПЛИС бывают, реализуются последовательным соединением триггеров )))

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


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

С динамическим управлением - и есть двухступенчатый D-триггер в его классическом понимании (D-Latch). По фронту данные из первой ступени попадают во вторую, этим обеспечивается динамичность, т.е. работа только по фронту, а не по уровню.

Ну не знаю. Нас по советской терминологии учили. Двухступенчатый триггер состоит из двух синхронных триггеров работающих по уровню. С динамическим управлением - это тот который запоминает и выдаёт значение по фронту, у него явно выраженных ступеней нет. Можно вот эту книжку глянуть:

0427033.jpg

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


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

Можно вот эту книжку глянуть:
Ну что, гянули? И как? Остаётесь при своём мнении?

 

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


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

Ну что, гянули? И как? Остаётесь при своём мнении?

Что-то я Вас не понимаю.

1. Синхронный триггер:

post-78485-1432132316_thumb.png

 

2. Двухступенчатый на базе синхронного:

post-78485-1432132364_thumb.png

 

3. С динамическим управлением:

post-78485-1432132410_thumb.png

Может триггер с динамическим управлением и функционирует так как вы говорите, но двухступенчатым он не является. Классический двухступенчатый триггер - это тот который под номером 2.

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


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

но двухступенчатым он не является
Хм... а что по-Вашему на 3 схеме образуют элементы под номерами 5 и 6?

 

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


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

Кто-нибудь из вас знает про принципы работы ISA ?

Мне необходим более объёмный материал (книга), где полностью разжёвано.

Нужно спроектировать на ПЛИС ISA шестнадцатибитную (Преобразователь интерфейса UART - ISA). :rolleyes:

 

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


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

Хм... а что по-Вашему на 3 схеме образуют элементы под номерами 5 и 6?
Я не спорю, может быть. Но нас учили так как говорю: триггер с динамическим управлением - это триггер с динамическим управлением, а двухступенчатый - это два синхронных стоящих в послед.

 

Кто-нибудь из вас знает про принципы работы ISA ?
Не так давно где-то здесь, в соседних темах, книжку выкладывали, буквально на этой неделе, я не помню где, поищите.

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


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

Кто-нибудь из вас знает про принципы работы ISA ?

Мне необходим более объёмный материал (книга), где полностью разжёвано.

Нужно спроектировать на ПЛИС ISA шестнадцатибитную (Преобразователь интерфейса UART - ISA). :rolleyes:

М.Гук."Интерфейсы PC"

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


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

Я не спорю, может быть. Но нас учили так как говорю: триггер с динамическим управлением - это триггер с динамическим управлением, а двухступенчатый - это два синхронных стоящих в послед.
Ну видимо неправильно учили )) Динамическое управление невозможно сделать без двух ступеней. Либо, как написано в той же книжке выше, на аналоговых дифференциальных цепях. Двухступенчатый - это не обязательно 2 строго одинаковых последовательно соединённых триггера. Это просто 2 триггера последовательно, неважно одинаковых или немного разных. В конце концов все "разные" триггеры сделаны из RS путём навешивания на его входы и выходы всякой логической обвязки )))

 

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


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

... про принципы работы ISA ?

... где полностью разжёвано. ... на ПЛИС ISA (Преобразователь интерфейса UART - ISA)....

"Вальпа О.Д. Полезные схемы с применением МК и ПЛИС_2006"

стр.35 - интерфейс шины ISA на ПЛИС

стр.42 - адаптер СОМ порта на ПЛИС

 

 

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


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

Ну видимо неправильно учили )) Динамическое управление невозможно сделать без двух ступеней. Либо, как написано в той же книжке выше, на аналоговых дифференциальных цепях. Двухступенчатый - это не обязательно 2 строго одинаковых последовательно соединённых триггера. Это просто 2 триггера последовательно, неважно одинаковых или немного разных. В конце концов все "разные" триггеры сделаны из RS путём навешивания на его входы и выходы всякой логической обвязки )))

Учили -то правильно, просто классификации разные:

post-78485-1432304093_thumb.png

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


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

Спасибо за объяснения. А скажите, пожалуйста, почему в описании временных диаграмм работы ISA говорится то, что ...

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

 

А на временной диаграмме какая-то задержка, получается ? То есть следует при проектировании все таки следовать

времени переключения CLK в единицу, то есть в этот момент заканчивается снятие данных ? или по перепаду фронта IOR в высокий уровень ?

post-86485-1432328027_thumb.jpg

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


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

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...