|
Синхронизатор, Две тактовые, единичные импульсы |
|
|
|
 |
Ответов
|
Apr 10 2011, 18:54
|

Гуру
     
Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874

|
Цитата(sazh @ Apr 10 2011, 22:07)  Код if(in_flag) dff_a <= 1'b1; else dff_a <= 1'b0; end В Верилоге нельзя написать проще? Код dff_a <= in_flag; Кстати, не стоит бездумно доверять даже Т-Ш. Его схема расширения импульсов с двумя триггерами хороша, но первый триггер тем не менее может порождать переход dff_a с нарушением сетапа выходного триггера, соответственно второй триггер может попасть в метастабильность, о чем Т-Ш забыли упомянуть. Соответственно, чтобы избежать риска метастабильности ena_out_flag, вам нужно добавить в сдвиговый регистр на вход еще один триггер, реализовав нормальный синхронизатор.
--------------------
Пишите в личку.
|
|
|
|
|
Apr 10 2011, 19:41
|
Гуру
     
Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804

|
Цитата(Oldring @ Apr 10 2011, 22:28)  Я понял. И что, это описание приводит к необходимости писать if? Да, в верилоге есть некая неистественность при описании асинхронной установки. Но VHDL еще более неистественнен process (C, CLR) begin if (CLR = ’1’)then Q <= ’0’; elsif (C’event and C=’0’)then Q <= D; end if; Тот же if при описании асинхронной установки. И еще круче if при описании фронта клока, да еще с закрытием end if Фронт клока - это фронт клока, а не приоритетность в описании
|
|
|
|
|
Apr 10 2011, 19:47
|

Гуру
     
Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874

|
Цитата(sazh @ Apr 10 2011, 23:41)  Да, в верилоге есть некая неистественность при описании асинхронной установки. Но VHDL еще более неистественнен process (C, CLR) begin if (CLR = ’1’)then Q <= ’0’; elsif (C’event and C=’0’)then Q <= D; end if;
Тот же if при описании асинхронной установки. И еще круче if при описании фронта клока, да еще с закрытием end if Фронт клока - это фронт клока, а не приоритетность в описании Еще раз спрощу. в вашем коде if просто копирует один сигнал в другой. Неужели он необходим чтобы синтезатор синтезировал триггер с асинхронным сбросом? в VHDL есть стандартные функции rising_edge, falling_edge, для приведения описания к "более естественному" if falling_edge( C ) then ... end if; Необходимость писать end if - это хорошо. Вы не упустили моё дополнение про ошибку в вашем коде?
--------------------
Пишите в личку.
|
|
|
|
|
Apr 10 2011, 20:01
|

Гуру
     
Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874

|
Цитата(sazh @ Apr 10 2011, 23:50)  Я реализовал схему из учебника. Эта схема отрабатывает импульс любой длительности в импульс длительность нужного периода. Все. С риском метастабильности на выходе. Да, посмотрел еще раз в Т-Ш, и так как эта потенциально метастабильная схема растяжения импульса из двух триггеров описана у них в пункте "синхронизация импульсов" как усовершенствование обычного двухтриггерного синхронизатора, можно прийти к выводу, что Т-Ш не "забыли упомянуть про риск метастабильности", а на самом деле его не заметили. В общем, еще раз повторю. Не стоит бездумно доверять учебникам. Цитата(sazh @ Apr 10 2011, 23:57)  Я подумал, что это наезд на верилог со стороны ярого сторонника VHDL. А это он меня оказывается в ошибке уличил. Смешно. И в ошибке тоже уличил А наезд был несерьезным. Понятно, что можно написать там и без if, и синтезатор наверняка поймет правильно. Хотелось узнать причину использования вами такой конструкции.
--------------------
Пишите в личку.
|
|
|
|
|
Apr 10 2011, 20:17
|
Частый гость
 
Группа: Свой
Сообщений: 114
Регистрация: 7-05-08
Из: РФ, Москва
Пользователь №: 37 354

|
Цитата(Oldring @ Apr 11 2011, 00:01)  Понятно, что можно написать там и без if, и синтезатор наверняка поймет правильно. Хотелось узнать причину использования вами такой конструкции. Не поймет. Квартусовский, например, на такие конструкции ругается.
Сообщение отредактировал Ethereal - Apr 10 2011, 20:23
--------------------
SystemVerilog - язык, заточенный Альтерой под свои кристаллы теми же приемами использования примитивов, что и AHDL. ©
|
|
|
|
|
Apr 10 2011, 20:21
|

Гуру
     
Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874

|
Цитата(Ethereal @ Apr 11 2011, 00:17)  Не поймет. Квартусовский, например, на такие конструкции ругается. Значит, я был лучшего мнения о вашем кактусе. И про верилог я могу сказать только "фи". Описание асинхронного сброса через posedge in_flag - это экономия за счет естественности описания. В VHDL, конечно, требуются отдельно описывать списки чувствительности процесса, что иногда напрягает, но необходимо для симуляции, но сама логика с разделенными асинхронными и синхронной ветками if гораздо прозрачнее получается.
--------------------
Пишите в личку.
|
|
|
|
|
Apr 10 2011, 20:49
|

Гуру
     
Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874

|
Цитата(sazh @ Apr 11 2011, 00:25)  Приведите свой пример. Достойный ваших знаний. Вот описание этой схемы синхронизатора на VHDL. В VHDL-2008 будут доступны некоторые дополнительные упрощения, но ISE его пока что не синтезирует. Код library ieee; use ieee.numeric_bit.all;
entity in_out_flag is port( in_flag : in bit; out_clk : in bit; ena_out_flag : out bit ); end in_out_flag;
architecture Behavioral of in_out_flag is -- На S6 схема получается проще, если начальное состояние триггера с задействованной асинхронной установкой равно 1 signal shift_reg : bit_vector( 1 to 4 ) := (others => '1'); begin
process( in_flag, out_clk ) begin if rising_edge( out_clk ) then shift_reg <= shift_reg srl 1; end if; if in_flag = '1' then shift_reg( 1 ) <= '1'; end if; end process;
ena_out_flag <= shift_reg( 3 ) and not shift_reg( 4 );
end Behavioral; Пример на самом деле немного учебный, потому что в промышленном коде нужно вместо двух внутренних триггеров вставить обычный синхронизатор как отдельный компонент, тайминги в котором тщательно обконстрейнены, и прописаны у его триггеров все необходимые атрибуты, чтобы отключить оптимизацию через них логики.
--------------------
Пишите в личку.
|
|
|
|
|
Apr 11 2011, 08:43
|
Гуру
     
Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804

|
Цитата(Oldring @ Apr 10 2011, 23:49)  Вот описание этой схемы синхронизатора на VHDL. Снимаю шляпу. Помню Вашу реализацию Barrel Shifters. Чтобы понять, что Вы написали, мне пришлось задействовать rtl просмотрщик. И в этом примере Вы все поставили с ног на голову, применив сдвиг вправо. Вы ведь прекрасно понимаете, что Ваше описание нечитаемо для пользователя среднего уровня развития. (Два if в одном процессе). И опять я полез в RTL просмотрщик. А потом гадай, как другие синтезаторы к такому описанию отнесутся. Интересно, есть у Вас работники, которые в состоянии подхватить Ваши проекты.
|
|
|
|
Сообщений в этой теме
AlphaMil Синхронизатор Apr 7 2011, 13:19 Мур Цитата(AlphaMil @ Apr 7 2011, 17:19) Гуру... Apr 7 2011, 13:33 Мур Цитата(Мур @ Apr 7 2011, 16:33) CODE
libr... Apr 12 2011, 07:44 Kuzmi4 2 AlphaMil
поищите по форуму - тут SM выкладывал к... Apr 7 2011, 14:25 Мур Цитата(Kuzmi4 @ Apr 7 2011, 18:25) 2 Alph... Apr 7 2011, 16:25 AndrewS6 http://www.fpga4fun.com/CrossClockDomain2.html Apr 7 2011, 14:35 AlphaMil 2 AndrewS6 и всем остальным спасибо очень интересн... Apr 7 2011, 14:41 Kuzmi4 2 Мур
Если взглянуть внимательнее ваш HDL модуль в... Apr 7 2011, 17:02 Мур Цитата(Kuzmi4 @ Apr 7 2011, 21:02) 2 Мур
... Apr 7 2011, 17:36 Kuzmi4 2 Мур
посмотрел статейку и рисунок - слямзено с ED... Apr 9 2011, 10:44 Ethereal Цитата(Kuzmi4 @ Apr 9 2011, 14:44) 2 Мур
... Apr 9 2011, 11:23  Kuzmi4 Цитата(Ethereal @ Apr 9 2011, 14:23) ....... Apr 9 2011, 11:32   Ethereal Цитата(Kuzmi4 @ Apr 9 2011, 15:32) Вот во... Apr 9 2011, 11:39 Kuzmi4 2 Ethereal
я собственно это к чему, случался дизай... Apr 9 2011, 11:50 Ethereal Цитата(Kuzmi4 @ Apr 9 2011, 15:50) 2 Ethe... Apr 9 2011, 12:44 sazh Цитата(Kuzmi4 @ Apr 9 2011, 14:50) В таки... Apr 9 2011, 13:13 Boris_TS Тут как-то совсем не прозвучало в исходном задании... Apr 10 2011, 11:46 Boris_TS Цитата(AlphaMil @ Apr 10 2011, 20:17) Да,... Apr 10 2011, 17:28  Boris_TS Цитата(Boris_TS @ Apr 10 2011, 21:28) Цит... Apr 12 2011, 17:18         sazh Цитата(Oldring @ Apr 10 2011, 22:58) С ри... Apr 10 2011, 20:02          Oldring Цитата(sazh @ Apr 11 2011, 00:02) Да твор... Apr 10 2011, 20:08           sazh Цитата(Oldring @ Apr 10 2011, 23:08) Я уж... Apr 10 2011, 20:16               sazh Цитата(ViKo @ Apr 11 2011, 11:47) Вот и я... Apr 11 2011, 08:47                Oldring Цитата(sazh @ Apr 11 2011, 12:47) Картинк... Apr 11 2011, 09:06                 sazh Цитата(Oldring @ Apr 11 2011, 12:06) Да, ... Apr 11 2011, 09:58          ViKo Цитата(Ethereal @ Apr 10 2011, 23:17) Не ... Apr 11 2011, 07:05           Ethereal Цитата(ViKo @ Apr 11 2011, 11:05) А на та... Apr 11 2011, 07:53            ViKo Цитата(Ethereal @ Apr 11 2011, 10:53) Как... Apr 11 2011, 08:51             sazh Цитата(ViKo @ Apr 11 2011, 11:51) Создал ... Apr 11 2011, 09:54           Мур Цитата(ViKo @ Apr 11 2011, 11:05) ..Кто и... Apr 11 2011, 09:55            Oldring Цитата(Мур @ Apr 11 2011, 13:55) Схема до... Apr 11 2011, 10:04             Мур Цитата(Oldring @ Apr 11 2011, 14:04) Для ... Apr 11 2011, 10:15              Oldring Цитата(Мур @ Apr 11 2011, 14:15) И асинхр... Apr 11 2011, 10:17               Мур Цитата(Oldring @ Apr 11 2011, 14:17) Для ... Apr 11 2011, 10:26                Oldring Цитата(Мур @ Apr 11 2011, 14:26) В наших ... Apr 11 2011, 10:32                 Мур Цитата(Oldring @ Apr 11 2011, 14:32) Эта ... Apr 11 2011, 10:36                  Oldring Цитата(Мур @ Apr 11 2011, 14:36) Может я ... Apr 11 2011, 10:41                   Мур Цитата(Oldring @ Apr 11 2011, 14:41) А вы... Apr 11 2011, 10:53                   sazh Цитата(Oldring @ Apr 11 2011, 13:41) може... Apr 11 2011, 10:55                    Мур Цитата(sazh @ Apr 11 2011, 14:55) Если ме... Apr 11 2011, 11:02                     ViKo Цитата(Мур @ Apr 11 2011, 14:02) Страшно,... Apr 11 2011, 12:28                      Oldring Цитата(ViKo @ Apr 11 2011, 16:28) В метас... Apr 11 2011, 12:54                       ViKo Цитата(Oldring @ Apr 11 2011, 15:54) Веро... Apr 11 2011, 13:27                        Oldring Цитата(ViKo @ Apr 11 2011, 17:27) Это рис... Apr 11 2011, 13:38                      Мур Цитата(ViKo @ Apr 11 2011, 16:28) Про эту... Apr 11 2011, 16:22                       Oldring Цитата(Мур @ Apr 11 2011, 20:22) Это из-з... Apr 11 2011, 16:27                        Мур Цитата(Oldring @ Apr 11 2011, 20:27) Из-з... Apr 11 2011, 17:15                         Oldring Цитата(Мур @ Apr 11 2011, 21:15) Я понял... Apr 11 2011, 17:44                       ViKo Цитата(Мур @ Apr 11 2011, 19:22) Серый ур... Apr 11 2011, 18:30                        Мур Цитата(ViKo @ Apr 11 2011, 22:30) Да, воз... Apr 12 2011, 05:47                         Oldring Цитата(Мур @ Apr 12 2011, 09:47) А дополн... Apr 12 2011, 05:56                          Мур Цитата(Oldring @ Apr 12 2011, 09:56) Нет,... Apr 12 2011, 06:12                           Oldring Цитата(Мур @ Apr 12 2011, 10:12) Интересн... Apr 12 2011, 06:27                            Мур Цитата(Oldring @ Apr 12 2011, 10:27) Нет,... Apr 12 2011, 06:59                             Oldring Цитата(Мур @ Apr 12 2011, 10:59) А гистер... Apr 12 2011, 07:03                              Мур Цитата(Oldring @ Apr 12 2011, 10:03) Нет.... Apr 12 2011, 07:15                               Oldring Цитата(Мур @ Apr 12 2011, 11:15) Т.е. есл... Apr 12 2011, 09:22                                Мур Цитата(Oldring @ Apr 12 2011, 12:22) Почт... Apr 12 2011, 09:39                    Oldring Цитата(sazh @ Apr 11 2011, 14:55) Если ме... Apr 11 2011, 11:02                  Ethereal Цитата(Мур @ Apr 11 2011, 14:36) Может я ... Apr 11 2011, 10:44      Victor® Цитата(sazh @ Apr 10 2011, 22:41) Да, в в... Apr 10 2011, 19:51       sazh Цитата(Victor® @ Apr 10 2011, 22:51) Все ... Apr 10 2011, 19:57 ViKo Долбежка тактами поможет. Ведь защелкиваться будет... Apr 12 2011, 07:35 Oldring Цитата(ViKo @ Apr 12 2011, 11:35) Долбежк... Apr 12 2011, 08:08 ViKo Хочу вернуться к рис.8 (см. сообщение №58).
Возник... Apr 18 2011, 13:07 Ethereal Цитата(ViKo @ Apr 18 2011, 17:07) Что дел... Apr 18 2011, 14:25  ViKo Цитата(Ethereal @ Apr 18 2011, 17:25) А е... Apr 18 2011, 14:42 ViKo Присмотрелся внимательнее к рисунку. Да, есть в не... Apr 19 2011, 14:18
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|