Easyelectronics.ru

Электроника для всех
Текущее время: 27 июл 2017, 01:51

Часовой пояс: UTC + 5 часов



    • The World's Cheapest PCB Prototyping: 10 шт. 2-слоя 100*100mm 2$(около 140rub), изготовление за 24 часа.
    • Создание принципиальных схем и проектирование печатных плат
    • Крупнейший китайский онлайн магазин радиодеталей. Скидка 50%
    • Просмотр GERBER файлов

Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: Описание модуля на VERILOG
СообщениеДобавлено: 04 мар 2017, 23:04 
Только пришел

Зарегистрирован: 04 мар 2017, 22:52
Сообщения: 5
Люди, срочно нужна помощь.

Требуется описать на языке Verilog элемент серии 1533ие7, даташит - http://www.datasheet-pdf.ru/publ/13-1-0-46. Сама схема - 4-битный сдвоенный счетчик.

Таблицу истинности вынесу сюда:

R C In Dec

H X X X
L L X X
L H H H
L H pe H
L H H pe

R - reset (установить в ноль)
C - стробирующий сигнал
In - инкремент (прямой счет)
Dec - декремент (обратный счет)
pe - положительный фронт

Мой код был таким:
Код:
module 533ie7(R, C, In, Dec, Q1, Q2, Q3, Q4, CR, BR, D1, D2, D3, D4);

input D1, D2, D3, D4, Dec, In, C, R;
output Q1, Q2, Q3, Q4, CR, BR;

wire [1:4] D;
reg [1:4] Q;

assign D = {D1, D2, D3, D4};
assign {Q1, Q2, Q3, Q4} = Q;

always @(R or C or posedge In or posedge Dec)
begin
if (R)
   Q = 0;
else if (C == 0)
   Q = D;
else if (In)
   Q <= Q + 1;
else if (Dec)
   Q <= Q - 1;
end
endmodule


Во-первых, сразу возникает вопрос: я не могу понять, этот счетчик работает по фронтам сигнала или как защелка? На моей схеме никакого сигнала Clock к нему не подводится. Но, как видно из даташита, счет происходит тогда, когда на In или Dec поступает какой-то положительный сигнал. И как быть в таком случае? Как описывать этот элемент? К какой логике он относится: комбинационной или последовательной? Правильно ли я понял, что данные с сигналов D записываются в режиме защелки, а счет происходит в режиме триггера?

Второе: Quartus'у не понравилась строчка с always - недопустимы single и double-edge выражения. Это я вроде бы понял, но как тогда описывать блоки вот в таких моментах? Можно ли использовать несколько always в описании одного элемента? Не является ли это плохой практикой в Verilog?

Заранее спасибо за помощь!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Описание модуля на VERILOG
СообщениеДобавлено: 05 мар 2017, 02:47 
Старожил

Зарегистрирован: 19 июн 2012, 14:17
Сообщения: 3437
ritchie писал(а):
Требуется описать на языке Verilog элемент серии 1533ие7, даташит - http://www.datasheet-pdf.ru/publ/13-1-0-46. Сама схема - 4-битный сдвоенный счетчик.

Это аналог 74193, в квартусе он есть в megafunctions... там правда он релизован схемным вводом, а не на верилог.

ritchie писал(а):
Во-первых, сразу возникает вопрос: я не могу понять, этот счетчик работает по фронтам сигнала или как защелка? На моей схеме никакого сигнала Clock к нему не подводится.

Там подводится целых два клока - Inc и Dec... На ПЛИС такое безобразие лучше не делать.

ЗЫ сделайте нормальный синхронный счётчик, с одним клоком и выбором направления счёта отдельным сигналом.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Описание модуля на VERILOG
СообщениеДобавлено: 05 мар 2017, 03:01 
Только пришел

Зарегистрирован: 04 мар 2017, 22:52
Сообщения: 5
яверт писал(а):
Это аналог 74193, в квартусе он есть в megafunctions... там правда он релизован схемным вводом, а не на верилог.

Да, видел аналог зарубежный, поищу в Quartus.

По поводу безобразия согласен, но мне нужно описать именно такой вариант, который указан в даташите. Если подробнее, то мне нужно перенести этот элемент с принципиальной схемы на бумаге в Quartus. Поэтому и приходится как-то выкручиваться. Чтобы 2 Clock'а сразу приходили на элемент, да еще и на сигналы ин/декрементирования - такого я еще не видел, но надо как-то сделать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Описание модуля на VERILOG
СообщениеДобавлено: 05 мар 2017, 03:41 
Старожил

Зарегистрирован: 30 апр 2010, 22:56
Сообщения: 1528
Откуда: Киев
Как-то так вижу (без переносов):
Код:
module test01(R, C, Inc, Dec, Q1, Q2, Q3, Q4, CR, BR, D1, D2, D3, D4);

input D1, D2, D3, D4, Dec, Inc, C, R;
output Q1, Q2, Q3, Q4, CR, BR;

wire [0:3] D, En;
reg [0:3] Q;
reg Dir;

assign D = {D1, D2, D3, D4};
assign {Q1, Q2, Q3, Q4} = Q;


always @(Inc or Dec)
begin
   if (~Inc)
      Dir <= 1'b1;
   else if (~Dec)
      Dir <= 1'b0;

end

assign En = Inc & Dec;

always @(posedge R or negedge C or posedge En)
begin
if (R)
   Q <= 4'b0;
else if (~C)
   Q <= D;
else
begin
   if (~Dir)
      Q <= Q-4'b1;
   else
      Q <= Q+4'b1;
end

         
end
endmodule


И даже красивенько синтезируется )


Последний раз редактировалось Steel.ne 05 мар 2017, 03:49, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Описание модуля на VERILOG
СообщениеДобавлено: 05 мар 2017, 03:46 
Только пришел

Зарегистрирован: 04 мар 2017, 22:52
Сообщения: 5
Спасибо, выглядит правдоподобно. Только зачем вы ввели En, если в дальнейшем он не используется в блоке always?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Описание модуля на VERILOG
СообщениеДобавлено: 05 мар 2017, 04:12 
Старожил

Зарегистрирован: 30 апр 2010, 22:56
Сообщения: 1528
Откуда: Киев
Еще как используется ) мы же его указали в sensitivity list блока. Этого хватит. Мы же не пишем
if(CLK)... - раз блок выполняется, значит фронт был


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Описание модуля на VERILOG
СообщениеДобавлено: 05 мар 2017, 14:03 
Только пришел

Зарегистрирован: 04 мар 2017, 22:52
Сообщения: 5
мм ок, только по-моему вместо операции & там должна быть операция ИЛИ (assign En = In | Dec). На схеме так вроде.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Описание модуля на VERILOG
СообщениеДобавлено: 05 мар 2017, 14:18 
Старожил

Зарегистрирован: 30 апр 2010, 22:56
Сообщения: 1528
Откуда: Киев
нет. Счет идет по переднему фронту только тогда, когда второй сигнал установлен в единицу. Это соответствует переднему фронту (Inc & Dec)

И лучше глядеть на схему из забугорного аналога - там четко видно элемент И и отдельная защелка для хранения направления счета. А также понятно, как устроена логика переносов.


Вложения:
Снимок.PNG
Снимок.PNG [ 81.63 Кб | Просмотров: 658 ]
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB