|
0 / 0 / 0
Регистрация: 04.05.2009
Сообщений: 28
|
|
Verilog. Первые шаги.19.09.2013, 00:33. Показов 96675. Ответов 123
Метки нет (Все метки)
Всем привет.
Светодиодом помигал, динамическую индикацию на 7-ми сегментнике испробовал. Захотелось добавить в HelloWorld несколько последовательно соединенных двоично-десятичных счетчиков. Состряпал для этого модуль bcd счетчика. Не могу понять как его прикрутить к основному модулю. Цель: заставить бегать цифры от 0 до 9 хотя бы на одном из индикаторов. Пробовал сначала прикрутить тетрады data к отдельным счетчикам - не получилось, сейчас выделил для этого r1 - тоже ни в какую изменяться не хочет. Что я делаю не так ? module bcd_counter(CLK, DOUT); input CLK; output [3:0] DOUT; reg [3:0] data; assykn DOUT = data; always @(posedge CLK) begin if(data > 9) data = 0; else data = data + 1; end endmodule module lcd ( input wire clk, output reg [7:0] en, output reg[7:0] seg ); reg [31:0] data = h12345678; reg [31:0] counter; wire [2:0] tid_num; assykn tid_num = counter[17:15]; reg [3:0] tid; always @(posedge clk) begin counter=counter+1; end reg [3:0] r1; wire [3:0] w_r1; assykn w_r1 = r1; wire w_clk; assykn w_clk = counter[20]; bcd_counter cnt_1(w_clk, w_r1); always @(tid_num) begin case(tid_num) 0: en = 8b11111110; 1: en = 8b11111101; 2: en = 8b11111011; 3: en = 8b11110111; 4: en = 8b11101111; 5: en = 8b11011111; 6: en = 8b10111111; 7: en = 8b01111111; endcase end always @(tid_num) begin case(tid_num) 0: tid = r1[3:0]; 1: tid = data[7:4]; 2: tid = data[11:8]; 3: tid = data[15:12]; 4: tid = data[19:16]; 5: tid = data[23:20]; 6: tid = data[27:24]; 7: tid = data[31:28]; endcase end always@(tid) begin case(tid) 4b0000: seg=8b1100_0000; 4b0001: seg=8b1111_1001; 4b0010: seg=8b1010_0100; 4b0011: seg=8b1011_0000; 4b0100: seg=8b1001_1001; 4b0101: seg=8b1001_0010; 4b0110: seg=8b1000_0010; 4b0111: seg=8b1111_1000; 4b1000: seg=8b1000_0000; 4b1001: seg=8b1001_0000; 4b1010: seg=8b1000_1000; 4b1011: seg=8b1000_0011; 4b1100: seg=8b1100_0110; 4b1101: seg=8b1010_0001; 4b1110: seg=8b1000_0110; 4b1111: seg=8b1000_1110; endcase end endmodule Всё это действо для того, чтобы понять иерархию модулей. Следующим шагом хотел выделить модуль lcd в отдельный субмодуль (в духе видеокарты), чтобы отображал регистр из корневого модуля. Но пока затыка...
0
|
|
| 19.09.2013, 00:33 | |
|
Ответы с готовыми решениями:
123
Первые шаги с ATMEGA8-16PU, и первые ссадины Первые шаги Первые шаги |
|
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
|
||
| 06.10.2013, 02:05 | ||
Синхронизация не должна привести к изменению частотных свойств частотомера.
0
|
||
|
0 / 0 / 0
Регистрация: 04.05.2009
Сообщений: 28
|
||
| 06.10.2013, 02:16 | ||
Синхронизация не должна привести к изменению частотных свойств частотомера. этот сдвиговый регистр надо же еще с определенной частотой сдвигать. и эта частота должна быть намного больше максимальной измеряемой частоты сигнала. нет ? имхо тут уже 50 МГц будет маловато. или я что-то не догоняю ?
0
|
||
|
0 / 0 / 0
Регистрация: 15.06.2012
Сообщений: 3,097
|
|||
| 06.10.2013, 04:21 | |||
0
|
|||
|
0 / 0 / 0
Регистрация: 02.05.2013
Сообщений: 170
|
||||
| 06.10.2013, 21:33 | ||||
shurup, все это к тому, что Вы можете тактировать Ваш синхронизатор системным клоком.
0
|
||||
|
0 / 0 / 0
Регистрация: 02.05.2013
Сообщений: 170
|
|||||||
| 06.10.2013, 21:56 | |||||||
В самом начале этой темы Вы пытались собрать цепочку счётчиков и это Вам не удалось, насколько я помню. Предлагаю аналогичную задачу, только решать мы её будем используя поведенческий подход, а не структурный. Пусть нам необходимо описать схему делящую входной клок в 131072 раза. Очевидно, нужно использовать шестнадцати-разрядный двоичный счётчик. Для того, что бы было хоть какое-то соответствие твоей задаче, мы будем описывать цепочку из двух восьми-разрядных счётчиков.
Та же ситуация и с промежуточным сигналом tick_orsh -- он регистровый, тактируемый всё тем же клоком clk, однако изменяется он при условии A="11111111" omd B="11111111". Если после синтеза, в Квартусе мы откроем Risource Property Editor, чтобы заглянуть в самые кишки нашей схемы, то мы увидим, что сигнал q соединён с входами CLK_ENABLE триггеров составляющих регистр счётчика В. Соответственно и сигнал A="11111111" omd B="11111111" имеет такую схемную роль для выходного триггера tick_orsh. Очень долго это писал. Устал :( Надеюсь, что не зря тратил своё время и это кому-нибудь пригодится.
0
|
|||||||
|
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
|
||||
| 07.10.2013, 00:44 | ||||
А вообще, из всего, что выше, отличная статья получилась бы. bfkroup, shurup, не возьмётесь?
0
|
||||
|
0 / 0 / 0
Регистрация: 21.08.2011
Сообщений: 1,057
|
|
| 07.10.2013, 12:24 | |
|
Вот живут же люди... Квартус у них. А я жру грёбаное ISE и плачу...и снова жру и плачу...а потом пробую перенести проект и снова плачу.
Прошу прощения за оффтоп, но меня оно донельзя за**ало. "Защёлкивание значения на выходе счётчика-частотомера в параллельный регистр" - как по мне правильная идея. И никогда не переходите на Xilinx...
0
|
|
|
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
|
||
| 07.10.2013, 12:56 | ||
Хотя бы отдыхать душой после Xilinxа, раз у Вас с ним почему-то нелюбовь :-)
0
|
||
|
0 / 0 / 0
Регистрация: 15.12.2010
Сообщений: 931
|
|
| 07.10.2013, 13:05 | |
|
А помните, в сообществе выкладывали радио на плис. Там тоже xilinx вроде ничего страшного, гуй как гуй. Или там свои ньюнсы для кода?
0
|
|
|
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
|
||
| 07.10.2013, 13:29 | ||
Это как у микроконтроллеров разные IDE, и каждый предпочитает какую-то одну: для AVR - CodeVision или Studyo и др.; для STM32 - Keil или IAR или CooCox и др.
0
|
||
|
0 / 0 / 0
Регистрация: 04.05.2009
Сообщений: 28
|
|
| 07.10.2013, 13:58 | |
|
bfkroup, спасибо. все доходчиво разъяснил.
0
|
|
|
0 / 0 / 0
Регистрация: 21.08.2011
Сообщений: 1,057
|
|
| 07.10.2013, 13:58 | |
|
У меня к сожалению работа на Xilinxe. После нее душой отдыхать хочется на деревянных счётах, а не на электронике.
Нюанс Xilinx - ХУЁВЫЙ ЗЛОЕБУЧИЙ ТУЛЧЕЙН, крайне неудобный набор утилит, часто с размытым и перекрывающимся функционалом. Андроид с его фрагментацией это жалкий любитель. Пользователи активно используют больше 6 версий ISE, между которыми нереально мигрировать проект сложнее 74НС595. Туева хуча документации описывает старые версии, и в новых не работает. Умиляет старательно сохраняемая система веб-"помощи": типа если в вас ошибка, кликните по ссылке и прочитайте решение. На практике НИ ОДНОЙ ошибки нету задокументированой. При том сами камни отличные, софткорный Microbtozi тоже неплох, куча бесплатных корок есть. Но софт это преступление против человечности.
0
|
|
|
0 / 0 / 0
Регистрация: 04.05.2009
Сообщений: 28
|
|
| 07.10.2013, 14:00 | |
|
может откроете новую ветку о достоинствах и недостатках IDE для ПЛИС ? и здесь лишнего срача не будет, и ваши умозаключения новичкам проще найти будет.
0
|
|
|
0 / 0 / 0
Регистрация: 02.05.2013
Сообщений: 170
|
||
| 07.10.2013, 14:01 | ||
Только перед тем как сделать экспорт, пожалуйста, уберите всю логику в облака -- так нам будет проще проследить пути данных между регистрами в Вашем проекте.
0
|
||
|
0 / 0 / 0
Регистрация: 15.12.2010
Сообщений: 931
|
|
| 07.10.2013, 15:00 | |
|
Кстати, из недоступного на МК, и поигратся на ПЛИС очень понравился радиопередатчик на ПЛИС с сайта марсохода. Я себе под циклон повторил, прикольно. Еще бы приемник был таким простым, но увы быстрые ацп у нас не достать.
0
|
|
|
0 / 0 / 0
Регистрация: 04.05.2009
Сообщений: 28
|
|
| 07.10.2013, 22:02 | |
|
Кстати, пришла мысль. На входе счетчика (частотомера) никакого синхронизатора ставить не надо. Здесь попадание в метастабильное состояние исключено, т.к. сам входной сигнал является счетным. Единственно где оно может возникнуть - это регистр защелка на выходах счетчика. Но и это не должно особо напрягать, т.к. выход из этого состояния глазу заметен не будет. Сигналы сброса счетчика и разрешения счета асинхронны и отношения к клокам не имеют. Считаю что моя реализация вполне жизнеспособна :).
Как считаете ? Я прав ? Хотя на счет глаз я поторопился (обновление раз в секунду), надо обдумать... А ну тогда в качестве синхронизатора использовать два или три регистра защелки на выходе счетчика (бред наверно несу :) . Это позволит не использовать PLL, т.е. можно смастерить и на cpld ipm240 к примеру с относительно низкочастотным тактовым генератором. Во как !!! :) Блин, ну и на выходе счетчика проблем быть не должно. Счет же останавливается, только потом фиксируется в регистре защелке. Нихера ничего не надо, думаю все и так ништяг и без возможных проблем :) Нет ? Шуруп, садись. Пять :)
0
|
|
|
0 / 0 / 0
Регистрация: 02.05.2013
Сообщений: 170
|
||
| 07.10.2013, 23:01 | ||
http://yody.sk/d/RiCGp8u8AcN9C Обратите внимание, Вы тактируете регистры модуля bcd_counter_32 входным сигналом PIN. http://yody.sk/d/BTzgtv16AcMx6 В топ-левеле регистр data тактируется clk. Внимание вопрос! Будет ли выполнено условие по времени установки данных для регистра data. Или, другими словами, гарантированно ли установление данных на входе регистра data за время Tsu до прихода защёлкивающего клока clk ??? Понятно, что нет, гарантию такую никто на даст. Выражаясь языком STA Ваш Launch Clock асинхронен по отношению к Latch Clockу. И метастабильность возможна!! Повторюсь: для создания надёжной работоспособной схемы формирующей достоверные выходные данные все регистры системы необходимо тактировать одним клоком, а внешний сигнал поступающий в ПЛИС провести через синхронизатор. Мультиклоковые дизайны будете ваять, когда немного освоитесь и подрастёте в теме FPGA :)) P.S.: Полчаса прикручивал картинки, а они не отобразились :(
0
|
||
|
0 / 0 / 0
Регистрация: 04.05.2009
Сообщений: 28
|
||
| 07.10.2013, 23:12 | ||
Будет гарантия, т.к. время установления выходов счетчика явно меньше длительности периода основной тактовой частоты. А у нас счетчик сначала останавливается и только через период CLK_50M защелкивается значение.
0
|
||
|
0 / 0 / 0
Регистрация: 02.05.2013
Сообщений: 170
|
||
| 07.10.2013, 23:18 | ||
0
|
||
|
0 / 0 / 0
Регистрация: 04.05.2009
Сообщений: 28
|
|
| 07.10.2013, 23:21 | |
|
и тут вы ИМХО не правы :). Если время установления выхода будет соизмеримо или больше длительности периода тактовой частоты, то эту ПЛИС можно выкинуть, т.к. там вообще ничего стабильного сделать будет не возможно.
опс вместо 1Гц прочитал 1ГГц... мысль меняется в корне. надо обдумать нет. мое утверждение в силе
0
|
|
| 07.10.2013, 23:21 | |
|
Первые шаги с AVR
первые шаги Первые шаги первые шаги в c# Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
|
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
|
сукцессия 43. Вторая научная статья за месяц- прайминг и гатгил
anaschu 25.07.2026
две стороны одной монеты
|
Более приземисто - Эстафету хвоста в .cdl (деревья эстафеты в сад).
Hrethgir 24.07.2026
В будущем, после написания блока инверсии обхода дерева (эстафеты хвоста), я планирую вернуться к нашему прошлому разговору о том, обладают ли знания целеполаганием. Тогда я пришел к выводу, что. . .
|
|
Вот представьте что вам дали бессмертие.
kumehtar 24.07.2026
Вот представьте что вам дали бессмертие, ничего более не меняя. Вообще ничего, только бессмертие в нынешнем виде. Рады были бы? Что бы вы тут делали всё это время?
Никакой пенсии. Никакого нового. . .
|
сукцессия 41
anaschu 24.07.2026
Численная верификация бифуркации в агентной модели лесной сукцессии: от одного параметра к ансамблю
Автор: пользователь @Shumilov_AS | Раздел: Прикладная математика / Численные методы
Кратко. . .
|
сукцессия 40. Ансамблевая кластерная параметризаци, часть 1.
anaschu 24.07.2026
Пр# Сопровождение научной статьи ИИ-ассистентом: подготовка публикации и калибровка агентно-ориентированной модели сукцессии микоризных систем
**Полевые заметки о двухнедельной совместной работе**. . .
|
Теория всего 12. ВГК на планете в стратегической игре "терра"
anaschu 21.07.2026
### Главные семантические изменения и дешифровка новой физики
1. **`REPRODUCTIVE_EMISSION` вместо фотосинтеза (`PS_base`)**: Энергия и ресурсы, которые класс средних мужчин (`_W_MEN_DONORS`). . .
|