Программируемая логика - это не так уж и сложно. Разберемся вместе.
Пт окт 04, 2013 15:21:11
Набрался наглости и решил создать эту тему.
Корректно ли использовать логические операторы в VHDL , типо and , or , xor вне процесса. Компилируется то оно компилируется , а с задержками может быть беда ?
Пт окт 04, 2013 17:31:17
Если вы на этих and, or, xor не пытаетесь создать регистры, то не вижу смысла заботиться о задержках. Хотя, надо понимать, что задержки будут в любом случае и их величина зависеть будет от того, в сколько макроячеек (для CPLD) эта логика уложится. Если это критично - PostFit симуляция для проверки.
А так это нормальная практика, по моему. В процессе крутятся счетчики, а на выход идут результаты этих счетчиков через небольшую логику.
Пт окт 04, 2013 17:38:09
Спасибо.
Пт окт 04, 2013 22:13:17
Не в тему задержек. Если вдруг Вам приспичит проверять синтез в том же моделсиме, а проверяемая конструкция будет иметь вид
- Код:
D1:name_component
PORT MAP(
clk=>clk,
A=> Ain,
B=>sign1 and sign2,
C=>sign3 or sign5,
D=>sign4 xor sign2 and sign5)
то данная конструкция не отработается, хотя среда проектирования (например квартус) ее вполне переварит.
Сб окт 05, 2013 14:01:57
Всем привет. Почему моделирование прошивки в ISim , ISim больше 1.26 Us не позволяет. Останавливает моделирование.
Как можно вылечить данный недуг ?
Вт окт 15, 2013 14:17:39
Всем привет. Пишу код на VHDL по вычислению CRC8 принятых данных по rs232
- Код:
--g(x)=x^8+x^5+x^4+1
crc8 := crc8(6)&crc8(5)&(crc8(4) xor crc8(7))&(crc8(3) xor crc8(7))&crc8(2)&crc8(1)&crc8(0)&(crc8(7) xor rs232_rx);
Что неправильно в этой записи?
На сайте
http://outputlogic.com/?page_id=27 сгенерировал vhdl код CRC8 для полинома 0x31, работает, что у меня неправильно не понимаю (((((
Вт окт 15, 2013 17:20:36
У меня так:
crc <= (crc(0) xor datain) & crc (7 downto 5) & (crc(4) xor crc(0) xor datain) & (crc(3) xor crc(0) xor datain) & crc(2 downto 1);
Короче, там где XOR с последним битом, там еще нужен XOR с входными данными тоже
Последний раз редактировалось
uldemir Вт окт 15, 2013 17:23:20, всего редактировалось 1 раз.
Вт окт 15, 2013 17:22:03
Это робит ?
Вт окт 15, 2013 17:24:56
Это из совершенно работоспособного проекта -
измерение температуры далласовским 1-wire датчиком ds18x20/22
Последний раз редактировалось
uldemir Вт окт 15, 2013 17:26:25, всего редактировалось 1 раз.
Вт окт 15, 2013 17:25:45
Спасибо.
Сб окт 19, 2013 12:11:39
Товарищи коты, такой вопрос. Впринципе знаю вхдл довольно неплохо (как мне казалось). Но тут наткнулся на вот такую дурацкую штуку а именно: есть 2 вектора А : std_logic_vectrjr(7 downto 0) и
В : std_logic_vectrjr(3 downto 0). И надо мне вот чё :
A(7 downto 0) <= B(0 to 7);
На такую запись компилятор ругается, присвоение векторов в заданном изначально направлении ему подавай!
Вот я и задумался, а как так сделать то, что б за один такт? Можно конечно написать : А(0) <= B(7), A(1) <= B(6)..... Можно и так A <= B(7) & B(6) & B(5)... Но эт хорошо, если битов 8 а если 128? Есть конечно всякие операторы сдвигов и т.п. но что там компилятор наразводит реализуя их использовании я не знаю.... Вот может кто подскажет?
Сб окт 19, 2013 12:31:25
for I in 7 downto 0 loop
A(I) <= B(7-I);
end loop;
Пн окт 21, 2013 07:23:22
Да, мысль не плохая... только вот одним тактом в данном случае не отделаешься....
Пн окт 21, 2013 09:09:54
Вот в чём весь и прикол. ОТДЕЛАЕШЬСЯ один тактом.
Я раньше тоже не понимал. Тут for .... loop , это не тот for как допустим в си/с++ . В данном случаем компилятор VHDL из :
- Код:
for I in 7 downto 0 loop
A(I) <= B(7-I);
end loop;
Сделает вот так:
- Код:
A(7) <= B(0);
A(6) <= B(1);
A(5) <= B(2);
A(4) <= B(3);
A(3) <= B(4);
A(2) <= B(5);
A(1) <= B(6);
A(0) <= B(7);
Есть неплохая книжка. Называется FPGA Express, там про это написано.
Пн окт 21, 2013 09:13:55
хм... я как то использовал (давно) эту конструкцию и готов биться об заклад что выполняется она по тактам... или может я что то забыл... Вообщем сейчас промоделирую. За книжку отдельное спасибо
Пн окт 21, 2013 09:16:31
Вот вырезки из книги.
- Вложения
-
- Снимок.PNG
- (33.22 KiB) Скачиваний: 1279
-
- Снимок2.PNG
- (72.78 KiB) Скачиваний: 868
Пн окт 21, 2013 09:28:30
Ну что ж,
dimitriy91, ModelSim показал, что эту битву ты выиграл, НО ВОЙНА ЗА МНОЙ
Всё действительно нормально работает, просто loop использую только в TEST_BENCHах не особо замарачиваясь над тем как он там выполняется... Вообщем спасибо, теперь усвою
Чт ноя 07, 2013 16:14:23
День добрый. Посоветуйте порядок действий перепрошивания плисины.
Плис не новая, и в ней уже имеется прошивка. Я подкорректировал проект, и снова залил прошивку в плис. С тех пор она какую то бредятину показывать стала. (запрыгали сигналы на тех пинах, где их не должно быть, и все пины перепутались.) Хотя прошивка самой плисины работает как надо (правильно суммирует и подает в нужной последовательности импульсы)
Чт ноя 07, 2013 16:37:12
Начнём с того, что в ПЛИС прошивка храниться не может. А то, что пины не тезапрыгали, то надо в PlanAhead правильно всё указать. Какой производитель ПЛИС , хотя бы сказали ?! Я так понял речь идёт о старом стенде ?
Powered by phpBB © phpBB Group.
phpBB Mobile / SEO by Artodia.