|
|
  |
Метастабильность по входу CE для FF Xilinx, Есть? Нету? |
|
|
|
Jun 15 2015, 07:36
|

отэц
    
Группа: Свой
Сообщений: 1 729
Регистрация: 18-09-05
Из: Москва
Пользователь №: 8 684

|
Уважаемые, объясните в двух словах про метастабильность - если я ищу фронт у импульса через такую конструкцию: CODE reg [3:0] front1; always @(posedge clk) front1<={front1[1:0],start} if (front1==3'b011) ....... и на длительность импульса приходится минимум 4 такта клоковой частоты, мне же нечего боятся метастабильности? з.ы. прошу прощения за оффтопик.
--------------------
b4edbc0f854dda469460aa1aa a5ba2bd36cbe9d4bc8f92179f 8f3fec5d9da7f0 SHA-256
|
|
|
|
|
Jun 15 2015, 08:47
|
Частый гость
 
Группа: Свой
Сообщений: 180
Регистрация: 17-02-09
Из: Санкт-Петербург
Пользователь №: 45 001

|
Цитата Код reg [3:0] front1; always @(posedge clk) front1<={front1[1:0],start} if (front1==3'b011) ....... Так делать нельзя! У вас front1[0] как раз и будет время от времени находится в метастабильном состоянии. Но это не самое плохое - самое плохое то, что вы непонятный уровень нулевого бита используете в логике. А это конец гарантированно. Нужно сделать так: Код reg [3:0] front1; always @(posedge clk) front1<={front1[2:0],start} if (front1[3:1]==3'b011) .......
|
|
|
|
|
Jun 15 2015, 08:55
|

отэц
    
Группа: Свой
Сообщений: 1 729
Регистрация: 18-09-05
Из: Москва
Пользователь №: 8 684

|
QUOTE (TRILLER @ Jun 15 2015, 12:47)  Так делать нельзя! ..спасибо! з.ы. Открыт для других мнений или таких - же.
--------------------
b4edbc0f854dda469460aa1aa a5ba2bd36cbe9d4bc8f92179f 8f3fec5d9da7f0 SHA-256
|
|
|
|
|
Jun 15 2015, 19:20
|

Знающий
   
Группа: Свой
Сообщений: 680
Регистрация: 11-02-08
Из: Msk
Пользователь №: 34 950

|
Цитата(Lmx2315 @ Jun 15 2015, 11:36)  [code]reg [3:0] front1; always @(posedge clk) front1<={front1[1:0],start} IF-ы выкиньте. В двух словах: разряд 0 сдвигового регистра- наибольшая вероятность метастабильности, использовать нельзя разряд 1 - вероятность меньше, в обычных применениях можно использовать, в высоконадежных - нет. разряд 2 - веротяность метастабильности еще меньше. в высоконадежных системах использовать можно. разряд 3 и далее - вероятность метастабильности почти 0. Но если копать теорию, то по тереме Марино метастабильность будет присутсовать всегда, хоть тысячу разрядов поставьте в сдвиговый регистр. Будем исходить из того, что у вас обычная система. Следовательно, используйте разряды 1,2.. и т.д. Фронт, про который вы спрашивали: assign rise = front1[1] & ~front1[2];
|
|
|
|
|
Jun 16 2015, 11:57
|
Частый гость
 
Группа: Свой
Сообщений: 180
Регистрация: 17-02-09
Из: Санкт-Петербург
Пользователь №: 45 001

|
Цитата(XVR @ Jun 16 2015, 13:54)  ..примитив сдвигового регистра (SLR16), а он в качестве CDC синхронизатора не работает  Поясните пожалуйста.
|
|
|
|
|
Jun 16 2015, 14:55
|
Частый гость
 
Группа: Свой
Сообщений: 180
Регистрация: 17-02-09
Из: Санкт-Петербург
Пользователь №: 45 001

|
Цитата(des00 @ Jun 16 2015, 15:02)  SRL16 и ее аналоги это память с генераторами адреса, бороться с метастабильностью не может. ISE/Vivado/Quartus обожают их пихать по поводу и без. Простой способ борьбы добавление асинхронного сброса (и то не всегда, симплифай умеет обоходить это) или атрибуты синтеза Спасибо. Думал, там схема как-нибудь по-хитрому перестраивается. Однако.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|