реклама на сайте
подробности

 
 
6 страниц V  < 1 2 3 4 5 > »   
Reply to this topicStart new topic
> Синхронизатор, Две тактовые, единичные импульсы
sazh
сообщение Apr 10 2011, 20:16
Сообщение #31


Гуру
******

Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804



Цитата(Oldring @ Apr 10 2011, 23:08) *
Я уже предложил добавить на вход вашего сдвигового регистра еще один триггер, чтобы породить там стандартный синхронизатор.


Добавим.
Код
module in_out_flag
(
input  in_flag,
input  out_clk,
output ena_out_flag
);

reg          dff_a = 1'b0;
reg [2:0] shift_rg = 3'b000;

always @(posedge out_clk or posedge in_flag)
begin
if(in_flag)            dff_a <= 1'b1;
else                dff_a <= 1'b0;
end

always @(posedge out_clk)
begin
shift_rg <= {shift_rg[1:0], dff_a};
end

assign ena_out_flag = ~shift_rg[2] && shift_rg[1];

endmodule
Go to the top of the page
 
+Quote Post
Ethereal
сообщение Apr 10 2011, 20:17
Сообщение #32


Частый гость
**

Группа: Свой
Сообщений: 114
Регистрация: 7-05-08
Из: РФ, Москва
Пользователь №: 37 354



Цитата(Oldring @ Apr 11 2011, 00:01) *
Понятно, что можно написать там и без if, и синтезатор наверняка поймет правильно.
Хотелось узнать причину использования вами такой конструкции.

Не поймет. Квартусовский, например, на такие конструкции ругается.

Прикрепленное изображение

Сообщение отредактировал Ethereal - Apr 10 2011, 20:23


--------------------
SystemVerilog - язык, заточенный Альтерой под свои кристаллы теми же приемами использования примитивов, что и AHDL. ©
Go to the top of the page
 
+Quote Post
Oldring
сообщение Apr 10 2011, 20:21
Сообщение #33


Гуру
******

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



Цитата(Ethereal @ Apr 11 2011, 00:17) *
Не поймет. Квартусовский, например, на такие конструкции ругается.


Значит, я был лучшего мнения о вашем кактусе.

И про верилог я могу сказать только "фи". Описание асинхронного сброса через posedge in_flag - это экономия за счет естественности описания. В VHDL, конечно, требуются отдельно описывать списки чувствительности процесса, что иногда напрягает, но необходимо для симуляции, но сама логика с разделенными асинхронными и синхронной ветками if гораздо прозрачнее получается.


--------------------
Пишите в личку.
Go to the top of the page
 
+Quote Post
sazh
сообщение Apr 10 2011, 20:25
Сообщение #34


Гуру
******

Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804



Цитата(Oldring @ Apr 10 2011, 23:21) *
Значит, я был лучшего мнения о вашем кактусе.


А причем тут квартус. Это конструкция рекомендована xst.pdf. И моделсим не против.
Приведите свой пример. Достойный ваших знаний.
Go to the top of the page
 
+Quote Post
Oldring
сообщение Apr 10 2011, 20:49
Сообщение #35


Гуру
******

Группа: Свой
Сообщений: 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;


Пример на самом деле немного учебный, потому что в промышленном коде нужно вместо двух внутренних триггеров вставить обычный синхронизатор как отдельный компонент, тайминги в котором тщательно обконстрейнены, и прописаны у его триггеров все необходимые атрибуты, чтобы отключить оптимизацию через них логики.


--------------------
Пишите в личку.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Apr 11 2011, 07:05
Сообщение #36


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(Ethereal @ Apr 10 2011, 23:17) *
Не поймет. Квартусовский, например, на такие конструкции ругается.

А на такие (код от Oldring) - нет.
Кто из нас неправ?
Прикрепленное изображение

Надеюсь, честь Quartus'а спасена? sm.gif
Go to the top of the page
 
+Quote Post
Ethereal
сообщение Apr 11 2011, 07:53
Сообщение #37


Частый гость
**

Группа: Свой
Сообщений: 114
Регистрация: 7-05-08
Из: РФ, Москва
Пользователь №: 37 354



Цитата(ViKo @ Apr 11 2011, 11:05) *
А на такие (код от Oldring) - нет.
Кто из нас неправ?
Надеюсь, честь Quatus'а спасена? sm.gif

Какая связь между кодом Oldring на VHDL и возможностью проглатывания синтезатором предложенной Oldring'ом же замены в верилоговском описании? o_O

Было
Код
always @(posedge C or posedge R)
begin
  if(R) O<=1;
  else O<=0;
end


Предложено
Код
always @(posedge C or posedge R)
begin
  O<=R;
end


Сообщение отредактировал Ethereal - Apr 11 2011, 07:54


--------------------
SystemVerilog - язык, заточенный Альтерой под свои кристаллы теми же приемами использования примитивов, что и AHDL. ©
Go to the top of the page
 
+Quote Post
sazh
сообщение Apr 11 2011, 08:43
Сообщение #38


Гуру
******

Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804



Цитата(Oldring @ Apr 10 2011, 23:49) *
Вот описание этой схемы синхронизатора на VHDL.


Снимаю шляпу. Помню Вашу реализацию Barrel Shifters. Чтобы понять, что Вы написали, мне пришлось задействовать rtl просмотрщик.
И в этом примере Вы все поставили с ног на голову, применив сдвиг вправо.
Вы ведь прекрасно понимаете, что Ваше описание нечитаемо для пользователя среднего уровня развития.
(Два if в одном процессе). И опять я полез в RTL просмотрщик.
А потом гадай, как другие синтезаторы к такому описанию отнесутся.
Интересно, есть у Вас работники, которые в состоянии подхватить Ваши проекты.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Apr 11 2011, 08:47
Сообщение #39


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(sazh @ Apr 11 2011, 11:43) *
Чтобы понять, что Вы написали, мне пришлось задействовать rtl просмотрщик.
А потом гадай, как другие синтезаторы к такому описанию отнесутся.

Вот и я, из любопытства скомпилировал код Oldring и показал картинку.
Go to the top of the page
 
+Quote Post
sazh
сообщение Apr 11 2011, 08:47
Сообщение #40


Гуру
******

Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804



Цитата(ViKo @ Apr 11 2011, 11:47) *
Вот и я, из любопытства скомпилировал код Oldring и показал картинку.


Картинка у него другая. Это не его код.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Apr 11 2011, 08:51
Сообщение #41


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(Ethereal @ Apr 11 2011, 10:53) *
Какая связь между кодом Oldring на VHDL и возможностью проглатывания синтезатором предложенной Oldring'ом же замены в верилоговском описании? o_O

Вы показали картинку, и написали, что на такое Quartus ругается. Я показал картинку, на которую Quartus "не ругается". Они что, сильно отличаются? Поясните, что вы хотели сказать в первом случае, и только что.

Цитата(sazh @ Apr 11 2011, 11:47) *
Картинка у него другая. Это не его код.

Как это не его? Скопировал. Создал файл *.vhd. Скомпилировал. Картинку извлек. В сообщение забросил.
Go to the top of the page
 
+Quote Post
Oldring
сообщение Apr 11 2011, 09:06
Сообщение #42


Гуру
******

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



Цитата(sazh @ Apr 11 2011, 12:47) *
Картинка у него другая. Это не его код.


Мой! Сам писал! Мамой клянусь! biggrin.gif


Цитата(sazh @ Apr 11 2011, 12:43) *
Вы ведь прекрасно понимаете, что Ваше описание нечитаемо для пользователя среднего уровня развития.
(Два if в одном процессе). И опять я полез в RTL просмотрщик.


Да, к сожалению "средний уровень развития" желает лучшего.

Тем не менее, этот код не должен быть очень сложным для профессионального программиста, занявшегося HDL и не поленившегося прочитать стандарт языка. Люди "от железа" просто смотрят на HDL как на "описание схемы", от программирования - как на описание поведения. И, кстати, согласитесь, моё описание на VHDL проще и естественнее, когда в нём разобраться - просто сдвиговый регистр на 4 бита, у которого состояние первого регистра асинхронно устанавливается в единицу отдельным асинхронным входом.

Два if - кажется, встречал такое даже в рекомендациях по стилю не помню каких тулзов.


--------------------
Пишите в личку.
Go to the top of the page
 
+Quote Post
sazh
сообщение Apr 11 2011, 09:54
Сообщение #43


Гуру
******

Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804



Цитата(ViKo @ Apr 11 2011, 11:51) *
Создал файл *.vhd. Скомпилировал. Картинку извлек. В сообщение забросил.


Тогда в догон версия пакета и целевой кристалл.
Go to the top of the page
 
+Quote Post
Мур
сообщение Apr 11 2011, 09:55
Сообщение #44


Знающий
****

Группа: Свой
Сообщений: 815
Регистрация: 7-06-06
Из: Харьков
Пользователь №: 17 847



Цитата(ViKo @ Apr 11 2011, 11:05) *
..Кто из нас неправ?

Прямо буря в стакане воды!
Вот что требовалось ...по рис 8!
Код, предложенный мной в начале, описывает два выходных регистра. Первый триггер - делитель. Схема достаточно универсальна для любых частот...

Сообщение отредактировал Мур - Apr 11 2011, 09:56
Прикрепленные файлы
Прикрепленный файл  sch_imp.bmp ( 189.62 килобайт ) Кол-во скачиваний: 31
 
Go to the top of the page
 
+Quote Post
sazh
сообщение Apr 11 2011, 09:58
Сообщение #45


Гуру
******

Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804



Цитата(Oldring @ Apr 11 2011, 12:06) *
Да, к сожалению "средний уровень развития" желает лучшего.


Я бы сказал, золотая середина. Ведь на выходе - качественный продукт, понятный каждому.
Go to the top of the page
 
+Quote Post

6 страниц V  < 1 2 3 4 5 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 4th July 2025 - 05:36
Рейтинг@Mail.ru


Страница сгенерированна за 0.01476 секунд с 7
ELECTRONIX ©2004-2016