Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.87/521: Рейтинг темы: голосов - 521, средняя оценка - 4.87
 Аватар для Shurup
0 / 0 / 0
Регистрация: 04.05.2009
Сообщений: 28

Verilog. Первые шаги.

19.09.2013, 00:33. Показов 96683. Ответов 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
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.09.2013, 00:33
Ответы с готовыми решениями:

Первые шаги с ATMEGA8-16PU, и первые ссадины
Всем привет! Собрал свою первую схему на макетной плате с ATMEGA8-16PU. В схеме имеется два резистора на 300ом, и два светодиода. В Atmel...

Первые шаги
не понимаю на что ругается. делал все по инструкции как тут ...

Первые шаги
Купил себе Робопика , да только не хочет он выполнять программу из брошурки , выглядит она так: #ymstude<motor.h> void main() ...

123
 Аватар для Shurup
0 / 0 / 0
Регистрация: 04.05.2009
Сообщений: 28
22.10.2013, 00:30
Студворк — интернет-сервис помощи студентам
OtyxPM, спасибо. Полезная фича.
0
0 / 0 / 0
Регистрация: 02.05.2013
Сообщений: 170
22.10.2013, 00:36
открыл проект в 11м квартусе, действительно, чиппланер для семейства поддерживается

The Shyp Planner does not support the current assyknment divice family "MAX3000A". Use the Timing Closure Floorplan. мне пишет 9 квартусе.
0
 Аватар для Shurup
0 / 0 / 0
Регистрация: 04.05.2009
Сообщений: 28
22.10.2013, 00:49
в платной версии наверно можно потроха перекидывать из банка в банк. в халявной похоже только ногами играться.
0
0 / 0 / 0
Регистрация: 02.05.2013
Сообщений: 170
22.10.2013, 00:57
хе, заметил, что LogicTosk не поддержан в 11м! и в чём же тогда смысл чиппланера? решать проблемы вроде возникшей у Вас ещё можно, но вот таскать по чипу регионы не получится :( с другой стороны, как-то пох. никогда не пользовал чиппланер в своих проектах, так только экспериментировал, смотрел как работает :)
0
0 / 0 / 0
Регистрация: 15.12.2010
Сообщений: 931
30.11.2013, 16:22
Дабы не плодить тем, спрошу здесь.
Никто, не подскажет как описать на verilog пирамидальную структуру? К примеру имеем:
Code
1
2
always @(posedge clock)
Y=A+B+C+D;
Синтезируеться оно примерно так:

Или,другими словами, имеем задержку сигнала на 3 функциях(add).
Можно переписать функцию так:
Code
1
2
3
4
5
6
assykn y1=A+B;
assykn y2=C+D;
always @(posedge clock)
begin
Y=y1+y2;
end
И такая картинка:

Тут уже лучше, задержка всего на 2 функции (add). Тут конечно, еще могут возникнуть вопросы к коду, но я писал его для примера.
Вопрос в том, как соединять такие "пирамидальные" структуры. То есть, если у нас не 4 входа, а скажем 10, 16 и т.д., это же замашешся прописывать что с чем соеденяеться.
У меня пока возникла идея, что бы создать макромодули с 4, 8, 16 и т.д., входами, а уж их комбинировать между собой, так что бы получить нужное кол-во входов.
Но, возможно существует способ лучше?
0
0 / 0 / 0
Регистрация: 15.06.2012
Сообщений: 3,097
30.11.2013, 16:47
Цитата Сообщение от Sykmottir
Но, возможно существует способ лучше?
Можно скобки использовать, т.е. Y=(A+B)+(C+D);
0
0 / 0 / 0
Регистрация: 15.12.2010
Сообщений: 931
30.11.2013, 17:23
Спасибо, проверю во что синтезируется. Но все же интересует, соединение в пирамиду ?
0
0 / 0 / 0
Регистрация: 15.06.2012
Сообщений: 3,097
30.11.2013, 18:19
Цитата Сообщение от Sykmottir
Но все же интересует, соединение в пирамиду ?
Какую цель вы преследуете? Иметь красивую пирамиду в RTL-viewer`е? Или понятный и читабельный код?

ЗЫ Fmax у обоих дизайнов получился одинаковым, синтезатор оптимизировал комбинаторную логику ...
0
0 / 0 / 0
Регистрация: 15.12.2010
Сообщений: 931
30.11.2013, 20:20
И да и нет :). Вопрос в том, что если нам надо сложить Y=a1+a2+...+an. Пусть n для удобства будет кратно 2, но больше 4 ( скажем 16, 32), то Fmax, для первого дизайна будет меньше. Но вот как описать второй дизайн на верилоге, что бы не писать что вроде:
Y= ((a1+a2)+(a3+a4))+((a5+a6)+(a7+a8))
Возможно есть более элегантные решения.
Пытался искать по тегу Binary Tree Verilog, но ничего вразумительного не нашел.
ЗЫ На месте add может быть любая другая функция.
0
 Аватар для Shurup
0 / 0 / 0
Регистрация: 04.05.2009
Сообщений: 28
01.12.2013, 22:26
OtyxPM, у тебя не было проблем с прошивкой epcs4, с той что стоит на мини платке ? У меня стирается (дефолтную прошивку снес), бланкчек без проблем, вроде и пишет (ошибок не выдает кактус), НО циклон с новой прошивой не стартует.


http://**************************/download/file.php?id=17513&sid=01efcf091ab565ddb5 d66dc1co9d77cf
0
0 / 0 / 0
Регистрация: 15.12.2010
Сообщений: 931
01.12.2013, 22:51
Я не много при забыл, но у altera надо провести небольшую пляску с бубном что бы получить прошивку для epcs. А также если есть ихние мегафункции, то возможно прошивка вообще не стартует.
ЗЫ Предлагаю вам зашить какой нибудь хело-ворд на элементарных функциях, что бы убедиться что нет косяков с самим проектом.
0
 Аватар для Shurup
0 / 0 / 0
Регистрация: 04.05.2009
Сообщений: 28
01.12.2013, 22:54
Цитата Сообщение от Sykmottir
Я не много при забыл, но у altera надо провести небольшую пляску с бубном что бы получить прошивку для epcs. А также если есть ихние мегафункции, то возможно прошивка вообще не стартует.
ЗЫ Предлагаю вам зашить какой нибудь хело-ворд на элементарных функциях, что бы убедиться что нет косяков с самим проектом.
да и так хеломир. по jtag все бегает и моргает, только через AS странно как-то. в принципе не в первый раз прошиваю, только на другой отладке, проблем не наблюдалось. конверт, АС - все как положено.

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

с этой отладкой вообще никаких ругательств со стороны кактуса.
0
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
01.12.2013, 22:55
Цитата Сообщение от shurup
OtyxPM, у тебя не было проблем с прошивкой epcs4, с той что стоит на мини платке ? У меня стирается (дефолтную прошивку снес), бланкчек без проблем, вроде и пишет (ошибок не выдает кактус), НО циклон с новой прошивой не стартует.
Проблем не было.
А если в ОЗУ - то пишет (прошивка *.sof) и стартует?
Если с этим нормально, то для записи во флэшку EPCS4 надо:
в-первых, другой файл (*.pof),
во-вторых - другой разъём на плате,
в-третьих - в прошивальщике выбрать интерфейс Active Serial вместо JTAG.
0
 Аватар для Shurup
0 / 0 / 0
Регистрация: 04.05.2009
Сообщений: 28
01.12.2013, 22:58
флюс конечно китайцы поленились отмыть местами. отдраю, посмотрим...

блин с усб-бластером похоже проблема. сейчас AS на обоих отладках одинаково не работает. прогер шьет, проверяет, но нет старта циклонов.
0
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
01.12.2013, 23:44
Цитата Сообщение от shurup
блин с усб-бластером похоже проблема. сейчас AS на обоих отладках одинаково не работает. прогер шьет, проверяет, но нет старта циклонов.
Ну это ещё повезло: у Альтеры бластер дешёвый. Вот если б это был Xilinx! 8-0

Кстати, в моём USB Btosterе был непропай: светодиодик плохо контачил (хотя прозванивался!). Пропаял - с тех пор работает надёжно.
А поскольку AS и JTAG пины у Циклона (и, соответственно, Бластера) разные - возможен непропай у AS-пинов или дорожек к ним. И все пути питания на всякий случай пропаять. См.схему, которую я утром присылал.
0
 Аватар для Shurup
0 / 0 / 0
Регистрация: 04.05.2009
Сообщений: 28
02.12.2013, 00:12
на демо-платке есть светик. гореть он должен когда nCONF-DONE = 0. Сейчас после сброса питалова он горит постоянно. Гаснет когда зальешь прошиву через jtag, и она (эта прошивка) стартанет. если снова сбросишь питалово - загорается вновь. раньше такого не было (прошил через AS и он погас. включил питалово, считал циклон прошиву из epcs4, запустился и снова светик погас).

что творится не пойму пока... может это все таки со стороны циклонов идет ?

самый прикол, что прошивает ведь и верификацию проходит без ошибок.
0
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
02.12.2013, 00:29
Цитата Сообщение от shurup
на демо-платке есть светик. гореть он должен когда nCONF-DONE = 0. Сейчас после сброса питалова он горит постоянно. Гаснет когда зальешь прошиву через jtag, и она (эта прошивка) стартанет. если снова сбросишь питалово - загорается вновь. раньше такого не было (прошил через AS и он погас. включил питалово, считал циклон прошиву из epcs4, запустился и снова светик погас).
Разве? У меня не так.

Цитата Сообщение от shurup
может это все таки со стороны циклонов идет ?
На плате, что на фотографии выше, четыре светодиода: один тупо на питании индикатор, три - присоединены к пинам 3,7,9 Циклона (т.е. не к тем, которые участвуют в прошивке, не к CONF_DONE).
0
 Аватар для Shurup
0 / 0 / 0
Регистрация: 04.05.2009
Сообщений: 28
02.12.2013, 00:54
это про другую платку, не ту что у тебя.


http://**************************/download/file.php?id=17514&sid=01efcf091ab565ddb5 d66dc1co9d77cf

он у меня постоянно горит после подачи питания. гаснет только если прошить через jtag.


http://**************************/download/file.php?id=17515&sid=01efcf091ab565ddb5 d66dc1co9d77cf

Либо что-то случилось, либо одно из двух.... (С) "Колобки"
0
 Аватар для Shurup
0 / 0 / 0
Регистрация: 04.05.2009
Сообщений: 28
02.12.2013, 21:49
странно. загрузился под линуксом. попробовал прошить 13-м кактусом. ожили обе платки.
что было так и не понял.
0
0 / 0 / 0
Регистрация: 15.12.2010
Сообщений: 931
02.12.2013, 21:52
shurup а что за плата, ссылочку можно?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.12.2013, 21:52

Первые шаги с AVR
Привествую! Решил, что пора слезать с Arduino и недоязыка, писать на чистом C под настоящие AVR и приобрел пару ATtiny13A на попробовать,...

C++ первые шаги (абсолютно первые)
Привет, пользователи CyberForum. Я относительно давний юзер этого форума, и вот, наконец-то решил воплощать мечту в реальность, а именно...

первые шаги
Всем добрый день-врядли, вечер-скорее всего, или ночь, я начал изучать асп.нет и хотел бы там заюзать sqlite базу -наткнулся на интересную...

Первые шаги
Привет всем! Я хочу попробовать себя в контекстной рекламе. Тематику выбрали - кулинария. Я по бегуну посмотрел и ахнул, цена бида 2-3...

первые шаги в c#
начал изучать c#.и вот столкнулся с первой проблемой. почем-то программа возводит в степень не то число что я ввел. using System; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
100
Ответ Создать тему
Новые блоги и статьи
Нейтральные знания, чистый код - бла-бла-бла-бла, на самом деле кликбейт и самореклама, плагиат, и вот почему
Hrethgir 27.07.2026
То-есть отклонение такой публикации говорит само за себя, и пусть только возьмут на вооружение после отклонения публикации - это будет чистейшим актом плагиата. Отклонял Хабр. Дословно, отклонённая. . .
тв 16 бой ии
anaschu 27.07.2026
Великий Перелом ИИ: Как уравнения ОДУ Radau дожали цензурные фильтры Алисы Фиксируем в мемофонде Теории Всего беспрецедентный факт в истории ИИ-зондирования. В затяжном многораундовом. . .
мв 15. непроверенное, возможно, глюк
anaschu 27.07.2026
НАУЧНО-АНАЛИТИЧЕСКИЙ ОТЧЕТ. РАЗДЕЛ 1. 1: «НАУКА» (РАСШИРЕННАЯ СТЕХИОМЕТРИЧЕСКАЯ И ГЕНЕТИЧЕСКАЯ ВЕРСИЯ)Тема: Теоретическое обоснование инвариантности 19-мерного тензорного ядра непрерывных ОДУ и. . .
Очистка реквизитов и табличных частей документа при копировании (вариант 2)
Maks 26.07.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРаботу", разработанного в КА2. Задача: Заменить алгоритм запрета копирования документов для сотрудников с ролью "Стажер",. . .
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
сукцессия 43. Вторая научная статья за месяц- прайминг и гатгил
anaschu 25.07.2026
две стороны одной монеты
Более приземисто - Эстафету хвоста в .cdl (деревья эстафеты в сад).
Hrethgir 24.07.2026
В будущем, после написания блока инверсии обхода дерева (эстафеты хвоста), я планирую вернуться к нашему прошлому разговору о том, обладают ли знания целеполаганием. Тогда я пришел к выводу, что. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru