|
Метастабильность по входу CE для FF Xilinx, Есть? Нету? |
|
|
|
 |
Ответов
(1 - 49)
|
Jun 10 2015, 07:47
|
Знающий
   
Группа: Участник
Сообщений: 835
Регистрация: 9-08-08
Из: Санкт-Петербург
Пользователь №: 39 515

|
Цитата(MegaVolt @ Jun 10 2015, 08:59)  Спасибо  Одно не понятно если с CE всё так хорошо почему его не используют в схемах для перехода из одного домена в другой? В известной книге Digital Design and Computer Architecture раздел 3.2.5 приводится схема триггера с CE, в FPGA используется вариант a), таким образом, CE ничем в принципе не отличается от других логических сигналов, и нарушение setup/hold для него будет приводить к метастабильности с той же вероятностью(естественно, только если изменение CE влечёт изменение сигнала на внутреннем входе D триггера).
|
|
|
|
|
Jun 10 2015, 16:41
|
Профессионал
    
Группа: Свой
Сообщений: 1 386
Регистрация: 5-04-05
Из: моська, RF
Пользователь №: 3 863

|
Цитата(MegaVolt @ Jun 10 2015, 08:59)  Спасибо  Одно не понятно если с CE всё так хорошо почему его не используют в схемах для перехода из одного домена в другой? Как уже сказали, CE это обычный пин. Только я не понял, что вы называете "хорошо". Хорошо или плохо, зависит от задачи. Если вас волнует один провод, поставьте один синхронизатор и всего делов.
|
|
|
|
|
Jun 11 2015, 06:49
|
Знающий
   
Группа: Свой
Сообщений: 779
Регистрация: 3-01-05
Из: Минск
Пользователь №: 1 783

|
Цитата(Dr.Alex @ Jun 10 2015, 19:41)  Как уже сказали, CE это обычный пин. Только я не понял, что вы называете "хорошо". Хорошо это если на данных стоит 1 а асинхронный сигнал затащить на CE и на выходе не будет метастабильности. Однако по сказанному выше понимаю что будет. Собственно вопрос снят. Спасибо
|
|
|
|
|
Jun 11 2015, 07:15
|
Профессионал
    
Группа: Свой
Сообщений: 1 386
Регистрация: 5-04-05
Из: моська, RF
Пользователь №: 3 863

|
Цитата(MegaVolt @ Jun 11 2015, 09:49)  Собственно вопрос снят. Чё-то у меня нет ощущения что вопрос снят :-))))) Во-первых, нужно писать на HDL, а не рисовать схему, поэтому вы всё равно не будете знать, куда придёт ваш сигнал. Во-вторых, рассуждать о метастабильности в терминах "будет - не будет" это жуткое дилетантство. Она характеризуется вероятностью появления, которая крайне низка, но никогда не 0. Поэтому в зависимости от ситуации вы либо можете на неё забить вообще, либо просто поставить лишний триггер-синхронизатор, и тем самым гарантировать что в случае появления она не распространится дальше. В вашем случае именно так и нужно поступить просто потому что это просто.
|
|
|
|
|
Jun 12 2015, 11:48
|
Знающий
   
Группа: Свой
Сообщений: 779
Регистрация: 3-01-05
Из: Минск
Пользователь №: 1 783

|
Цитата(Dr.Alex @ Jun 11 2015, 10:15)  Чё-то у меня нет ощущения что вопрос снят :-))))) Снят снят  Цитата Во-первых, нужно писать на HDL, а не рисовать схему, поэтому вы всё равно не будете знать, куда придёт ваш сигнал. Я ещё помню 155 серию  )) По этому я ещё долго буду рисовать схемы  )) и переводить их на xHDL Цитата Во-вторых, рассуждать о метастабильности в терминах "будет - не будет" это жуткое дилетантство. Она характеризуется вероятностью появления, которая крайне низка, но никогда не 0. Для данных само собой. Я выяснял так ли это для CE Может по каким то причинам вход CE свободен от этой особенности. Цитата В вашем случае именно так и нужно поступить просто потому что это просто. Не люблю ставить нечто не понимая до конца его необходимость.
|
|
|
|
|
Jun 15 2015, 07:15
|

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

|
Цитата(MegaVolt @ Jun 12 2015, 14:48)  Снят снят  Я ещё помню 155 серию  )) По этому я ещё долго буду рисовать схемы  )) Про 155 серю хорошо вспомнили - так и надо, начинать со схематика. К слову, про setup-hold, если хотите увидеть "как оно работает", раздобудьте схему триггера зайлинкса, и промоделируйте на спайсе. Очень хорошо и понятно будет про метастабильность и прочее. Ограничения по setup даются с некоторым запсом в расчете на паспортные PVT углы эксплуатации ПЛИС. Т.е. нарушения ведут лишь к сужению диапазноа температур и питаний, где ПЛИС будет работать. При маленьких нарушениях, в комнате будет не заметно. При больших - микросхему придется морозить, чтобы работала без сбоев ) А если с холдом проблема - тогда наборот нагревать может понадобиться :Р
|
|
|
|
|
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 обожают их пихать по поводу и без. Простой способ борьбы добавление асинхронного сброса (и то не всегда, симплифай умеет обоходить это) или атрибуты синтеза Спасибо. Думал, там схема как-нибудь по-хитрому перестраивается. Однако.
|
|
|
|
|
Jun 18 2015, 02:22
|

Гуру
     
Группа: Свой
Сообщений: 2 002
Регистрация: 17-01-06
Из: Томск, Россия
Пользователь №: 13 271

|
спасибо, дошло, как такое может быть физически. Я себе представлял, что там взаимосвязи между триггерами переключаются в режим физического сдвигового регистра. Но теперь понимаю, что сдвиговый регистр имитируется на основе принципов FIFO. А есть первоисточник информации, что SRL лишь имитирует сдвиговый регистр, а не физически переключает взаимосвязи? Цитата(XVR @ Jun 17 2015, 17:42)  Потому что триггеры тогда борются с метастабильностью, когда они включены в цепочку в количестве более одного. В SRL (как и в памяти вообще) цепочки из триггеров нет - грубо говоря он там один. Точнее их много, но включены они параллельно, а не последовательно В свою защиту (или в защиту возможности подавления метастабильности на SRL) скажу, что при имитации сдвигового регистра по принципам FIFO в каждом триггере информация хранится несколько тактов. А за это время метастабильность устаканится (с какой-то вероятностью. Вполне допускаю, что она меньше, чем для цепочного соединения триггеров).
--------------------
Зная себе цену, нужно ещё и пользоваться спросом...
|
|
|
|
|
Jun 18 2015, 06:31
|

Гуру
     
Группа: Свой
Сообщений: 2 002
Регистрация: 17-01-06
Из: Томск, Россия
Пользователь №: 13 271

|
ug384, это на спартан6. Вчитывался-вчитывался в параграф про сдвиговые регистры, ничего не нашёл, что бы хоть как-то косвенно указывало на имитацию. Более того, нашёл косвенные подтверждения обратного: наличие цепочного соединения сдвиговых регистров. Согласно рисунку 19 на странице 27, SRL имеет отдельный выход старшего бита для цепочного соединения, но и отдельный выход для динамического выбора какого-либо промежуточного бита. В случае имитации потребовалось бы 2 порта на чтение и один порт на запись, все с разными адресами, т.е. нужна 3-портовая память. С одной стороны, нигде не говорится, что она не 3-портовая внутри (по выводам снаружи она 2-портовая). Но с другой стороны, не слишком ли много усложнений для этой самой имитации: городить внутренний, не используемый снаружи, третий порт, городить 3 счётчика доступа...? Не проще ли сделать сдвиговый регистр "в лоб", подсоединив выход более младшего бита ко входу более старшего?
--------------------
Зная себе цену, нужно ещё и пользоваться спросом...
|
|
|
|
|
Jun 18 2015, 07:41
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(Krys @ Jun 18 2015, 14:31)  Вчитывался-вчитывался в параграф про сдвиговые регистры, ничего не нашёл, что бы хоть как-то косвенно указывало на имитацию. :-e :-e :-e ug331.pdf -> Spartan-3 Generation FPGA User Guide -> Section 1: Designing with Spartan-3 Generation FPGAs -> Using Look-Up Tables as Shift Registers (SRL16) -> Shift Register Architecture ug384.pdf -> Spartan-6 FPGA Configurable Logic Block -> Spartan-6 FPGA CLB -> Slice Description -> Figure 3: Diagram of SLICEM и там же -> Spartan-6 FPGA Configurable Logic Block -> Spartan-6 FPGA CLB -> Slice Description -> Figure 17: 32-bit Shift Register Configuration + текст выше
--------------------
|
|
|
|
|
Jun 18 2015, 10:14
|

Гуру
     
Группа: Свой
Сообщений: 2 002
Регистрация: 17-01-06
Из: Томск, Россия
Пользователь №: 13 271

|
Цитата(des00 @ Jun 18 2015, 14:41)  ug384.pdf -> Spartan-6 FPGA Configurable Logic Block -> Spartan-6 FPGA CLB -> Slice Description -> Figure 3: Diagram of SLICEM и там же -> Spartan-6 FPGA Configurable Logic Block -> Spartan-6 FPGA CLB -> Slice Description -> Figure 17: 32-bit Shift Register Configuration + текст выше Да именно это я и перекопал вдоль и поперёк, о чём писал в прошлом сообщении. Ну не вижу я там чего-то, откуда бы следовало, что сдвиговый регистр имитируется на принципах построения FIFO на памяти. То ли мы о разном говорим, то ли что... Потому что вот тут Вы ссылаетесь на документ, где, наоборот, прямо показано противоположное: Цитата(des00 @ Jun 18 2015, 14:41)  ug331.pdf -> Spartan-3 Generation FPGA User Guide -> Section 1: Designing with Spartan-3 Generation FPGAs -> Using Look-Up Tables as Shift Registers (SRL16) -> Shift Register Architecture Здесь на рисунке 7-2 на стр. 230 в явной форме виден классический сдвиговый регистр, без всякой имитации. Хотя, допускаю, что здесь показано лишь логическое построение сдвигового регистра, его функциональность. Физически это всё равно может быть реализовано в виде имитации. Но тогда эти хилые индусы - эдакие запутывальщики )))
--------------------
Зная себе цену, нужно ещё и пользоваться спросом...
|
|
|
|
|
Jun 18 2015, 12:37
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(Krys @ Jun 18 2015, 17:14)  Да именно это я и перекопал вдоль и поперёк, о чём писал в прошлом сообщении. Ну не вижу я там чего-то, откуда бы следовало, что сдвиговый регистр имитируется на принципах построения FIFO на памяти. То ли мы о разном говорим, то ли что... Потому что вот тут Вы ссылаетесь на документ, где, наоборот, прямо показано противоположное: Здесь на рисунке 7-2 на стр. 230 в явной форме виден классический сдвиговый регистр, без всякой имитации. Хотя, допускаю, что здесь показано лишь логическое построение сдвигового регистра, его функциональность. Физически это всё равно может быть реализовано в виде имитации. Но тогда эти хилые индусы - эдакие запутывальщики ))) Простите меня великодушно, но вы либо издеваетесь либо вам отказывает логика здравого смысла и вам принципиально тролить по черному. Черным по белому : Цитата With the SRL16 configuration, the fixed LUT values are configured instead as an addressable shift register (see Figure 7-2). The shift register inputs are the same as those for the synchronous RAM configuration of the LUT: a data input, clock, and clock enable (not shown)
--------------------
|
|
|
|
|
Jun 18 2015, 16:50
|
Знающий
   
Группа: Свой
Сообщений: 654
Регистрация: 24-01-07
Из: Воронеж
Пользователь №: 24 737

|
Цитата(Krys @ Jun 18 2015, 05:22)  В свою защиту (или в защиту возможности подавления метастабильности на SRL) скажу, что при имитации сдвигового регистра по принципам FIFO в каждом триггере информация хранится несколько тактов. Метастабильность в регистре хранения конечно устаканится, но метастабильность возникает и на счетчиках адресов. И если вы не знаете в какой адрес записали и с какого считываете, то как тут корректно работать? Что касается реализации, то у альтеры есть мегафункция сдвигового регистра на памяти. Там реализация вполне очевидна. Блок памяти у которого чтение и запись происходят с одного и того же адреса (режим записи после чтения), счетчик адреса считает до константного значения (глубина регистра) и сбрасывается в 0. Не думаю что у SRL будет какая-либо иная реализация.
|
|
|
|
|
Jun 19 2015, 02:31
|

Гуру
     
Группа: Свой
Сообщений: 2 002
Регистрация: 17-01-06
Из: Томск, Россия
Пользователь №: 13 271

|
Цитата(ViKo @ Jun 19 2015, 00:12)  Автоматика записи-чтения памяти работает-то на своей частоте... безупречно. Вот-вот, Вы меня опередили )) Счётчики записи-чтения вообще независимы от линии данных, она поступает на свой отдельный вход. Цитата(dvladim @ Jun 18 2015, 23:50)  Что касается реализации, то у альтеры есть мегафункция сдвигового регистра на памяти. Там реализация вполне очевидна. Блок памяти у которого чтение и запись происходят с одного и того же адреса (режим записи после чтения), счетчик адреса считает до константного значения (глубина регистра) и сбрасывается в 0. Мы говорим о сдвиговом регистре однобитного сигнала или о линии задержки многобитной шины на блочной памяти? И откуда там "реализация вполне очевидна"? Можете дать ссылку на документ и страницу плиз? Цитата(dvladim @ Jun 18 2015, 23:50)  Не думаю что у SRL будет какая-либо иная реализация. "Думаю, не думаю..." в данном случае неуместно ))) Надо факты
--------------------
Зная себе цену, нужно ещё и пользоваться спросом...
|
|
|
|
|
Jun 19 2015, 04:09
|

Гуру
     
Группа: Свой
Сообщений: 2 002
Регистрация: 17-01-06
Из: Томск, Россия
Пользователь №: 13 271

|
Цитата(des00 @ Jun 18 2015, 19:37)  Простите меня великодушно, но вы либо издеваетесь либо вам отказывает логика здравого смысла и вам принципиально тролить по черному. Не гневайтесь, есть ещё третий вариант: я хочу докопаться до истины, не полагаясь слепо на мнение авторитетных гуру ))) Цитата(des00 @ Jun 18 2015, 19:37)  Черным по белому : With the SRL16 configuration, the fixed LUT values are configured instead as an addressable shift register (see Figure 7-2). The shift register inputs are the same as those for the synchronous RAM configuration of the LUT: a data input, clock, and clock enable (not shown) Ну и где тут говорится о реализации сдвигового регистра с помощью имитации по принципам реализации FIFO на памяти? Давайте переводить. Но для этого нужно ещё привести абзац ранее, чтобы не вырывать фразы без контекста: The LUT can be described as a 16:1 multiplexer with the four inputs serving as binary select lines, and the values programmed into the LUT serving as the data being selected.Здесь говорится как введение, что в режиме LUTа (не в режиме SRL) "значения" (в терминологии выделенного куска), подаваемые на входы данных мультиплексора, запрограммированы (т.е. жёстко сидят в прошивке). Теперь следующее предложение: With the SRL16 configuration, the fixed LUT values are configured instead as an addressable shift register (see Figure 7-2).Теперь уже в нужной нам конфигурации SRL те самые, указанные в предыдущем предложении "значения", которые были в режиме LUT как fixed (а в предыдущем предложении они же для запутывания читателя были названы programmed), вместо этого сконфигурированы как адресуемый сдвиговый регистр. Возможно, Вас смутило слово адресуемый? Ну дак это относится к адресации выхода, что на картинке 7-2 указано как мультиплексор. Всё логично. Следующее предложение. The shift register inputs are the same as those for the synchronous RAM configuration of the LUT: a data input, clock, and clock enable (not shown)Перевод: входы сдвигового регистра те же самые, что и для конфигурации LUTа как синхронной памяти. Да, в выделенным Вами куске есть упоминание того, что есть что-то похожее, как у памяти. Те же самые входы. Ну и что, что входы те же? Это ещё не значит, что и работать будет совершенно так же. Да и входы те же, но не все, а только перечисленные далее после двоеточия: вход данных, тактовая и разрешение. Ну и что такого, что перечисленные входы имеются у сдвигового регистра? Да без них он в принципе не может быть построен. Это тоже никак не говорит об имитации. Если у двух чёрных ящиков одинаковые входы (да ещё и не все), то это не значит, что они и работать будут одинаково.
--------------------
Зная себе цену, нужно ещё и пользоваться спросом...
|
|
|
|
|
Jun 19 2015, 11:49
|
Местный
  
Группа: Свой
Сообщений: 249
Регистрация: 3-04-11
Из: .
Пользователь №: 64 084

|
Цитата Потому что триггеры тогда борются с метастабильностью, когда они включены в цепочку в количестве более одного. В SRL (как и в памяти вообще) цепочки из триггеров нет - грубо говоря он там один. Точнее их много, но включены они параллельно, а не последовательно  Цитата SRL16 и ее аналоги это память с генераторами адреса, бороться с метастабильностью не может. ISE/Vivado/Quartus обожают их пихать по поводу и без. Простой способ борьбы добавление асинхронного сброса (и то не всегда, симплифай умеет обоходить это) или атрибуты синтеза Там написано про сдвиговый регистр. т.е. если есть сдвиговый регистр, то есть и синхронизатор.
|
|
|
|
|
Jun 23 2015, 05:16
|

Гуру
     
Группа: Свой
Сообщений: 2 002
Регистрация: 17-01-06
Из: Томск, Россия
Пользователь №: 13 271

|
Спасибо! А я вот что там же нашёл на форуме: http://forums.xilinx.com/t5/Implementation...ght/true/page/2и из этой темы такая ссылка: https://groups.google.com/forum/#!topic...pga/5xSMNecxMDIТут конечно никто авторитетно ничего не заявляет. Точнее заявляет, но авторитетность проверить нельзя. Говорят то же самое, что SRL-ки не годятся для синхронизаторов. Короче, общий вывод такой, что в SRL-ках не полноценные триггеры. В частности, это подтверждается картинками 1 и 4 из этого документа: Patent Number: 5,889,413, Date of Patent: *Mar. 30, 1999. Там видно, что память реализована хитрым образом, как 2 инвертора. Т.е. видно, что это не триггер. Хотя, конечно, не факт, что в плисинах именно такая схема. С другой стороны, кому не критична длительность задержки при синхронизации, но хочется сэкономить ресурсы, можно поставить SRL на 32 такта. Уж за 32 такта что-то уже должно устаканиться, а потребление ресурсов будет минимальным.
--------------------
Зная себе цену, нужно ещё и пользоваться спросом...
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|