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

ВСЕМ ОГРОМНОЕ СПАСИБО ЗА НАСТАВЛЕНИЯ.

Проблема оказалась в строчке:

 

if ( conv_integer(to_stdLogicVector(ChannelOn(31 downto 0))) = 0 and conv_integer(to_stdLogicVector(ChannelOn(63 downto 32))) = 0 ) then

 

она не отрабатывала как надо, после переписывания этого куска все заработало.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

все заработало.

 

Сомнения гложат. Эта Ваша экономия ресурсов CPLD (без клоков и слоев регистров)

до добра не доведет.

Прогоните для приличия Ваш проект на FPGA.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сомнения гложат. Эта Ваша экономия ресурсов CPLD (без клоков и слоев регистров)

до добра не доведет.

Прогоните для приличия Ваш проект на FPGA.

 

Про клоки понятно, а вот на счет слоев регистров не совсем понял. Спасибо соберу проверю.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Радовался рано, чуть поменял тест и перестало работать. (между посылками сделал паузу не кратную клокам). Проект прилагаю. Почему-то вылазит опять Х в post-fit'e...

UART_cpld_prel.rar

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 h0t

Собственно проблема даже не в том как написано (хотя и в этом тоже), там главный трабл заключается в этом:

entity RS422_receiver is
    Port ( SCK : in  STD_LOGIC;
           RXD : in  STD_LOGIC;
...
if (RXD='0' and prevRXD='1') then          -- Start bit,
...

Собственно вас должно было на это натолкнуть вот это в модельсиме:

# Time: 2118500 ps Iteration: 18 Instance: /main_schematic_main_schematic_sch_tb/UUT/XLXI_35_RxReady_REG

# ** Warning: /X_FF HOLD High VIOLATION ON I WITH RESPECT TO CLK;

# Expected := 4.5 ns; Observed := 1.5 ns; At : 2118.5 ns

И если глянуть на это самый тригер то можно увидеть что реально по холду не выдерживается времянка потому что так устанавливаются данные на самом DATA-входе дизайна. Асинхронные сигналы обычно нужно нарезать регистрами, чтобы не иметь потом в синхронных дизайнах проблем с неопреденными состояниями тригеров. Об этом, я так понял, вам намекал sazh, когда говорил про слой регистров.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 h0t

Собственно проблема даже не в том как написано (хотя и в этом тоже), там главный трабл заключается в этом:

entity RS422_receiver is
    Port ( SCK : in  STD_LOGIC;
           RXD : in  STD_LOGIC;
...
if (RXD='0' and prevRXD='1') then          -- Start bit,
...

Собственно вас должно было на это натолкнуть вот это в модельсиме:

 

И если глянуть на это самый тригер то можно увидеть что реально по холду не выдерживается времянка потому что так устанавливаются данные на самом DATA-входе дизайна. Асинхронные сигналы обычно нужно нарезать регистрами, чтобы не иметь потом в синхронных дизайнах проблем с неопреденными состояниями тригеров. Об этом, я так понял, вам намекал sazh, когда говорил про слой регистров.

Я правильно понимаю, что после приемника нужно поставить защелку для данных и сигнала готовности данных по CLK?

 

После долгих чтений статией понял что проблема с метастабильностью системы. Теперь нужно думать как с этим жить.... Не совсем сейчас понимаю как это побороть.

 

Засунул D-триггеры на D по CLK, перед приемником не помогло. Да и теперь понятно почему. Помогут ли асинхронные регистры?

Изменено пользователем h0t

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

...

Засунул D-триггеры на D по CLK, перед приемником не помогло.

В каком смысле - не помогло ?

 

...

Помогут ли асинхронные регистры?

Это какие собсно?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В каком смысле - не помогло ?

 

 

Это какие собсно?

Это некие ASYNC_REG, правда я сильно не разбирался что это пока http://www.xilinx.com/itp/xilinx10/isehelp...c_registers.htm.

 

Вот решил проект новый попробовать сделать (содрал идею с коры) и защелки поставил но iSim все равно ведет себя неадекватно...

 

P.S. В прошивке не реализован поиск стопового бита 1го последнего. обвал происходит на первой посылке...

UART_Receiver.rar

Изменено пользователем h0t

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это некие ASYNC_REG, правда я сильно не разбирался что это пока http://www.xilinx.com/itp/xilinx10/isehelp...c_registers.htm.

Constraint ASYNC_REG - указывает симуляторам, что мы (Разработчик) знаем, что на выходе этого триггера будет метастабильное состояние сваливающееся в устойчивое состояние за 1 период тактовой частоты. Поэтому, при симуляции не надо отображать на выходе триггера с этим constraint'ом неопределённое значение (так называемый X). На работу самой ПЛИС этот constraint никак не влияет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...