likeasm
Участник-
Постов
229 -
Зарегистрирован
-
Посещение
Весь контент likeasm
-
Вы не правильно описываете автомат. В Гугл вбейте "xilinx Finite State Machines". Также можно в ISE в Language Templates(желтая лампочка) посмотрите Verilog - Synthesis Constructs - Coding Examples - State-Machines. Обратите особое внимание на присвоения. Как вы подключаете chipscope только телепату известно.
-
TRSTn подтянут на землю через 4.7 кОм?
-
UART flex10k50RC240-4
likeasm ответил woofer46 тема в Языки проектирования на ПЛИС (FPGA)
Счетчик с синхронным сбросом и разрешением частоты, взято из лампочки xilinx. reg [<upper>:0] <reg_name>; always @(posedge <clock>) if (<reset>) <reg_name> <= 0; else if (<clock_enable>) <reg_name> <= <reg_name> + 1'b1; -
UART flex10k50RC240-4
likeasm ответил woofer46 тема в Языки проектирования на ПЛИС (FPGA)
Странно вы формируете en. Перепишите передатчик конечным автоматом. Примеров UART множество, возьмите готовый и разберите как работает. -
Не знаю на счет пересброса... у меня lan8710a не устанавливал режим работы, если сразу после конфигурации уровень 0 подать. Пришлось подать сначала уровень 1 на RESETn, а потом уже уровень 0 на нужное количество тактов.
-
Выставите конфигурационные порты в какой-нить режим работы, например авто (если они к FPGA идут) и опустите RESETn на 10+ тактов от частоты подаваемой на XTAL. Этого обычно достаточно для того, чтобы phy заработала.
-
У вас же phy не в BGA корпусе, отправьте туда сигналы с FPGA и посмотрите доходят они до phy или нет.
-
Буферы ввода-вывода с третим(z) состоянием имеются только на портах ввода-вывода. Иными словами вы можете использовать inout или out с z-состоянием только в top модуле, но никак не во внутренних. Такова аппаратная архитектура современных ПЛИС. В том виде, в котором делаете вы, нельзя, так как шина control двунаправленная. Разделите прием и передачу на две независимые шины.
-
Внутри вашей ПЛИС нет буферов с z-состоянием. Вывод - нельзя использовать inout внутри ПЛИС. Вывод - пересматривайте дизайн вашей схемы. Посмотрите как организована шина wishbone.
-
Xilinx ISE 14.4
likeasm ответил likeasm тема в Среды разработки - обсуждаем САПРы
Создал новый проект, закинул модули из старого, все встало на свои места. Спасибо помогло! -
Xilinx ISE 14.4
likeasm опубликовал тема в Среды разработки - обсуждаем САПРы
Всем добрый день! Не пойму прикола, у меня после синтеза в модулях RTL Schematic имеются сигналы, которые я выкинул из кода или закомментировал. Глюк среды? -
Спасибо разобрался, действительно просаживаются внешние 5V в момент старта ПЛИС.
-
Ситуация у меня обычная, переписал чужой старый проект на Verilog из схематика. Была ПЛИС XC3090 стала spartan6 lx16. Сборка проекта проходит все стадии без предупреждений и ошибок. При конфигурации ПЛИС вижу program fail, сигнал DONE поднимается и падает. Думал проблема в JTAG, пихнул в ПЛИС другую тестовую прошивку все работает. Старую прошивку переписывал почти в лоб и не приходя в сознание, заменил только: 1. BUFE на мультиплексоры 2. Вывод частот сделал через ODDR 3. Входные триггеры, которые работали аля always @(posedge ADR_W9), где ADR_W9 формировался как Gated clock с дешифратора шины адреса, заменил на always @(negedge TMSCLKOUT) if (ADR_W9 & !IOSTROBE). Плис висит на общей шине адреса и данных с TMS320, т.е в проекте имеются IO порты, в случае коллизии выход на выход может происходить моя ситуация? Что может еще приводить к такой ситуации как у меня? Приму любые советы, критику. Я пока смотрю в сторону полного разбора схемы...
-
Чтобы добиться определенной последовательности действий в ПЛИС, лучше использовать FSM (автомат) и описывать его через блок case. Иначе вы просто запутаетесь в if else и в присвоениях.
-
Вспомнилась фраза из Ералаша "Тут рыбы нет". Так вот и тут, в вашей схеме, нет регистров, а только логика. Т.е на входы подали воздействие и на выходе получили результат. И замените "<=" на "=".
-
UART Verilog
likeasm ответил woofer46 тема в Языки проектирования на ПЛИС (FPGA)
тут про CDC написано http://iosifk.narod.ru/hdl_coding/hdl_coding_12_kit_2_09.pdf -
UART Verilog
likeasm ответил woofer46 тема в Языки проектирования на ПЛИС (FPGA)
пример того, что вы делаете лежит тут http://www.fpga4fun.com/SerialInterface.html сначала пропустите Rx через два D триггера. always @(posedge clkIN) sync_trig[1:0] <= {sync_trig[0],Rx}; -
У Воронежа есть ПЛИС с DSP умножителями, нужно повнимательнее поискать. По поводу умножения на логике, если надо быстро, то конвейер вам в помощь.
-
Можете пояснить как формируем 165 МГц через PLL? Так 50*33=1650/10=165? Или иной есть способ? Если нет, тогда возникает вопрос прокачает ли PLL 1,65 ГГц?
-
а я нашел и очень много http://www.digikey.com/product-search/en/c...illators/852334 нужно было только поискать.
-
может использовать IOBUF ?
-
Вывод данных verilog
likeasm ответил woofer46 тема в Языки проектирования на ПЛИС (FPGA)
а вы схемы сравните после синтеза -
Вывод данных verilog
likeasm ответил woofer46 тема в Языки проектирования на ПЛИС (FPGA)
Ваши сигналы ZPR1 и ZPR2 синхронны друг относительно друга, сами сказали, что "Длительность запросов 10мкс Между первым и вторым запросом 64мкс", а относительно CLK сигналы ZPR1 и ZPR2 асинхронны и их надо принять через синхронизатор это первый момент. Второй момент это "иголки", дребезг и ,возможно, затянутый фронт сигналов ZPR, это лечится схемой антидребезга, каких великое множество, в данном случае тупой счетчик. На все это вам намекали выше. -
Вывод данных verilog
likeasm ответил woofer46 тема в Языки проектирования на ПЛИС (FPGA)
module top( input ZPR1, input ZPR2, input CLK, output reg [9:0] D_OUT = 0 ); reg [1:0] sync_reg_1; reg [1:0] sync_reg_2; reg [1:0] deb_cnt_1 = 0; reg [1:0] deb_cnt_2 = 0; reg ZPR1_RTL = 0; reg ZPR2_RTL = 0; always @(posedge CLK) begin sync_reg_1[1:0] <= {sync_reg_1[0],ZPR1}; sync_reg_2[1:0] <= {sync_reg_2[0],ZPR2}; end always @(posedge CLK) begin if(sync_reg_1[1]==1 && deb_cnt_1!=2'b11) deb_cnt_1 <= deb_cnt_1 + 1'b1; else if(sync_reg_1[1]==0 && deb_cnt_1!=2'b00) deb_cnt_1 <= deb_cnt_1 - 1'b1; end always @(posedge CLK) begin if(sync_reg_2[1]==1 && deb_cnt_2!=2'b11) deb_cnt_2 <= deb_cnt_2 + 1'b1; else if(sync_reg_2[1]==0 && deb_cnt_2!=2'b00) deb_cnt_2 <= deb_cnt_2 - 1'b1; end always @(posedge CLK) begin if(deb_cnt_1 == 2'b11) ZPR1_RTL <= 1; else if(deb_cnt_1 == 2'b00) ZPR1_RTL <= 0; end always @(posedge CLK) begin if(deb_cnt_2 == 2'b11) ZPR2_RTL <= 1; else if(deb_cnt_2 == 2'b00) ZPR2_RTL <= 0; end always @(posedge CLK) if(ZPR1_RTL) D_OUT <= D_IN_1; else if(ZPR2_RTL) D_OUT <= D_IN_2; else D_OUT <= 0; endmodule смотрите чтобы синтезатор не превратил данные конструкции вместо D триггера (FD): sync_reg_1[1:0] <= {sync_reg_1[0],ZPR1}; sync_reg_2[1:0] <= {sync_reg_2[0],ZPR2}; в сдвиговый регистр (SRLC16) -
Можно поставить Cyclone III. А по теме... Вы что делаете? Вопрос типа: "Я сделал так, как сделать лучше?" - смотрелся бы уместнее.