Перейти к содержанию
    

likeasm

Участник
  • Постов

    229
  • Зарегистрирован

  • Посещение

Весь контент likeasm


  1. Вы не правильно описываете автомат. В Гугл вбейте "xilinx Finite State Machines". Также можно в ISE в Language Templates(желтая лампочка) посмотрите Verilog - Synthesis Constructs - Coding Examples - State-Machines. Обратите особое внимание на присвоения. Как вы подключаете chipscope только телепату известно.
  2. Счетчик с синхронным сбросом и разрешением частоты, взято из лампочки xilinx. reg [<upper>:0] <reg_name>; always @(posedge <clock>) if (<reset>) <reg_name> <= 0; else if (<clock_enable>) <reg_name> <= <reg_name> + 1'b1;
  3. Странно вы формируете en. Перепишите передатчик конечным автоматом. Примеров UART множество, возьмите готовый и разберите как работает.
  4. Не знаю на счет пересброса... у меня lan8710a не устанавливал режим работы, если сразу после конфигурации уровень 0 подать. Пришлось подать сначала уровень 1 на RESETn, а потом уже уровень 0 на нужное количество тактов.
  5. Выставите конфигурационные порты в какой-нить режим работы, например авто (если они к FPGA идут) и опустите RESETn на 10+ тактов от частоты подаваемой на XTAL. Этого обычно достаточно для того, чтобы phy заработала.
  6. У вас же phy не в BGA корпусе, отправьте туда сигналы с FPGA и посмотрите доходят они до phy или нет.
  7. Буферы ввода-вывода с третим(z) состоянием имеются только на портах ввода-вывода. Иными словами вы можете использовать inout или out с z-состоянием только в top модуле, но никак не во внутренних. Такова аппаратная архитектура современных ПЛИС. В том виде, в котором делаете вы, нельзя, так как шина control двунаправленная. Разделите прием и передачу на две независимые шины.
  8. Внутри вашей ПЛИС нет буферов с z-состоянием. Вывод - нельзя использовать inout внутри ПЛИС. Вывод - пересматривайте дизайн вашей схемы. Посмотрите как организована шина wishbone.
  9. Создал новый проект, закинул модули из старого, все встало на свои места. Спасибо помогло!
  10. Всем добрый день! Не пойму прикола, у меня после синтеза в модулях RTL Schematic имеются сигналы, которые я выкинул из кода или закомментировал. Глюк среды?
  11. Спасибо разобрался, действительно просаживаются внешние 5V в момент старта ПЛИС.
  12. Ситуация у меня обычная, переписал чужой старый проект на 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 порты, в случае коллизии выход на выход может происходить моя ситуация? Что может еще приводить к такой ситуации как у меня? Приму любые советы, критику. Я пока смотрю в сторону полного разбора схемы...
  13. Чтобы добиться определенной последовательности действий в ПЛИС, лучше использовать FSM (автомат) и описывать его через блок case. Иначе вы просто запутаетесь в if else и в присвоениях.
  14. Вспомнилась фраза из Ералаша "Тут рыбы нет". Так вот и тут, в вашей схеме, нет регистров, а только логика. Т.е на входы подали воздействие и на выходе получили результат. И замените "<=" на "=".
  15. тут про CDC написано http://iosifk.narod.ru/hdl_coding/hdl_coding_12_kit_2_09.pdf
  16. пример того, что вы делаете лежит тут http://www.fpga4fun.com/SerialInterface.html сначала пропустите Rx через два D триггера. always @(posedge clkIN) sync_trig[1:0] <= {sync_trig[0],Rx};
  17. У Воронежа есть ПЛИС с DSP умножителями, нужно повнимательнее поискать. По поводу умножения на логике, если надо быстро, то конвейер вам в помощь.
  18. Можете пояснить как формируем 165 МГц через PLL? Так 50*33=1650/10=165? Или иной есть способ? Если нет, тогда возникает вопрос прокачает ли PLL 1,65 ГГц?
  19. а я нашел и очень много http://www.digikey.com/product-search/en/c...illators/852334 нужно было только поискать.
  20. Ваши сигналы ZPR1 и ZPR2 синхронны друг относительно друга, сами сказали, что "Длительность запросов 10мкс Между первым и вторым запросом 64мкс", а относительно CLK сигналы ZPR1 и ZPR2 асинхронны и их надо принять через синхронизатор это первый момент. Второй момент это "иголки", дребезг и ,возможно, затянутый фронт сигналов ZPR, это лечится схемой антидребезга, каких великое множество, в данном случае тупой счетчик. На все это вам намекали выше.
  21. 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)
  22. Можно поставить Cyclone III. А по теме... Вы что делаете? Вопрос типа: "Я сделал так, как сделать лучше?" - смотрелся бы уместнее.
×
×
  • Создать...