|
помогите правильно правильно составить схему, выделение регистра с максимальным значением |
|
|
|
Mar 12 2012, 14:37
|
Участник

Группа: Участник
Сообщений: 28
Регистрация: 19-02-12
Пользователь №: 70 349

|
добрый день. почитал темки с сортировкой, везде реализация кодовая, а у меня задача состоит в следующем: есть на входе сигналы (частота пока не важна и не известна), к примеру 4 регистра на каждом свое значение. Необходимо из них выбрать регистр с максимальным значением и выдать его "адрес". Вопрос - можно ли это реализовать схематически? делаю в ISE 9.2 (ну вот так требует препод)
Вот как я начал делать. Подскажите чего не хватает, нужен ли счетчик (или он входит в регист) и как обозначается ключ, чтобы соединять/разьединять питание к регистрам. На какой плате это делать?
|
|
|
|
|
 |
Ответов
(1 - 59)
|
Mar 13 2012, 09:39
|
Гуру
     
Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847

|
Цитата(sakol @ Mar 12 2012, 18:37)  Вопрос - можно ли это реализовать схематически? делаю в ISE 9.2 (ну вот так требует препод) Можно Цитата Вот как я начал делать. Что то вы не то начали делать Цитата Подскажите чего не хватает, нужен ли счетчик (или он входит в регист) и как обозначается ключ, чтобы соединять/разьединять питание к регистрам. Судя по вопросам не хватает букваря по цифровой схемотехнике. Цитата На какой плате это делать? На виртуальной. Или препод от вас требует рабочее 'железо'?
|
|
|
|
|
Mar 13 2012, 11:09
|
Участник

Группа: Участник
Сообщений: 28
Регистрация: 19-02-12
Пользователь №: 70 349

|
Цитата(XVR @ Mar 13 2012, 13:39)  Что то вы не то начали делать
Судя по вопросам не хватает букваря по цифровой схемотехнике.
На виртуальной. Или препод от вас требует рабочее 'железо'? на виртуальной. ни я ни препод (ему 72 года) с этой прогой не работали, но кто-то ему рассказал, что тут можно реализовать с большим быстродействием. Вот и загрузил меня. вот насчет букваря тут четко сказано, у меня на бумаге расписанно что надо сделать, а название элементов в ксилинксе не нахожу некоторых DmitryR спасибо за код, чтобы его записать мне надо в том же проекте добавить new source-VHDL module ? или надо новый делать?
|
|
|
|
|
Mar 13 2012, 17:23
|
Участник

Группа: Участник
Сообщений: 28
Регистрация: 19-02-12
Пользователь №: 70 349

|
благодарю за советы, особенно за книгу! скачал, сижу читаю
|
|
|
|
|
Mar 13 2012, 19:11
|
Участник

Группа: Участник
Сообщений: 28
Регистрация: 19-02-12
Пользователь №: 70 349

|
дизайн ввиде схемы, так и нагляднее и обьяснить преподу проще, т.к. скорее всего будет дальнейшее применение всего этого. вот на схемке sazh: 1. в ксилинксе тоже есть такие инверторы как в квартусе? 2. что это за обозначения на входе (а,б,с,д) - так обозначаются регистры или это для наглядности?
|
|
|
|
|
Mar 14 2012, 14:07
|
Участник

Группа: Участник
Сообщений: 28
Регистрация: 19-02-12
Пользователь №: 70 349

|
Цитата(iosifk @ Mar 14 2012, 12:25)  может преподу чем-то помочь надо? Спросите его, пусть напишет... Вы в каком городе? Можете мне хоть в личку написать... отправлять ЛС мне еще нельзя  я из Донецка. с преподавателем пообщаюсь, выясню более подробно, позже отпишусь
|
|
|
|
|
Mar 15 2012, 22:41
|
Участник

Группа: Участник
Сообщений: 28
Регистрация: 19-02-12
Пользователь №: 70 349

|
а какие элементы необходимы, чтобы на регистре появились импульсы? (см. первый рис.) кроме vcc надо наверное ibuf еще добавить?
|
|
|
|
|
Mar 19 2012, 14:53
|
Участник

Группа: Участник
Сообщений: 28
Регистрация: 19-02-12
Пользователь №: 70 349

|
Цитата(XVR @ Mar 16 2012, 09:31)  Надо сделать test bench. Сами по себе импульсы не появятся не, я имею ввиду, что должно входить в состав: вот регистр, к нему надо подать питание, и всё? наверное нужно еще добавить счетчик, тактовый генератор?
|
|
|
|
|
Mar 20 2012, 09:45
|
Гуру
     
Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847

|
Цитата(sakol @ Mar 19 2012, 18:53)  не, я имею ввиду, что должно входить в состав: вот регистр, к нему надо подать питание, и всё? Про питание забудьте - оно в FPGA уже встроенно Цитата наверное нужно еще добавить счетчик, тактовый генератор? Тесты пишутся либо в виде временных диаграмм, либо в виде скриптов. Последние могут быть как в виде tcl скриптов для симулятора, так и в виде Verilog (или VHDL) функциональных модулей.
|
|
|
|
|
Mar 21 2012, 21:19
|
Участник

Группа: Участник
Сообщений: 28
Регистрация: 19-02-12
Пользователь №: 70 349

|
Народ, подскажите пожалуйста - этот буфер не могу найти, это потому что надо выбрать плату где такой буфер поддерживается или версия проги старенькая? использую ISE 9.2
|
|
|
|
|
Mar 22 2012, 04:43
|
Профессионал
    
Группа: Свой
Сообщений: 1 975
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757

|
Цитата(sakol @ Mar 22 2012, 00:19) 
Народ, подскажите пожалуйста - этот буфер не могу найти, это потому что надо выбрать плату где такой буфер поддерживается или версия проги старенькая? использую ISE 9.2 Смотря что вы хотите. Это тристабильный буфер. В современных FPGA такие есть только в IOB. Работает это так: Код O <= I when (T = '0') else (others => 'Z'); Не уверен на счёт активного уровня T.
|
|
|
|
|
Mar 22 2012, 06:16
|
Гуру
     
Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847

|
Цитата(sakol @ Mar 22 2012, 01:19) 
Народ, подскажите пожалуйста - этот буфер не могу найти, это потому что надо выбрать плату где такой буфер поддерживается или версия проги старенькая? Этот 'буфер' должен поддерживаться не 'платой', а FPGA, на ней установленной Цитата использую ISE 9.2 Т.е. у вас Xilinx. Доки читать не пробовали? BUFT16 - это макрос из 16 штук BUFT BUFT - это внутренний буфер с 3мя состояниями. Последний кристал, где это поддерживалось (если мне память не изменяет) - Virtex II. (Для справки - сейчас в производстве Virtex 7) Никакие современные кристаллы этот BUFT (а равно и BUFE) не поддерживают, т.к. у них нет внутренних 3х стабильных шин. Переделайте схему, что бы BUFT не было NB. Синтезатор может отконвертировать ваши BUFT в набор мультиплексоров, но закладываться на это я бы не стал
|
|
|
|
|
Mar 22 2012, 07:11
|
Участник

Группа: Участник
Сообщений: 28
Регистрация: 19-02-12
Пользователь №: 70 349

|
преподавателю какраз и нужно, чтобы буфер имел переход в 3-е состояние. сегодня поговорю с ним, может что-то изменится. суть нашей задачи - создание нового способа сортировки, вечером выложу схему на чем остановились и где нужен этот тристабильный буф.
|
|
|
|
|
Mar 22 2012, 09:04
|
Гуру
     
Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847

|
Цитата(sakol @ Mar 22 2012, 11:11)  преподавателю какраз и нужно, чтобы буфер имел переход в 3-е состояние. Внутри FPGA или снаружи? Цитата суть нашей задачи - создание нового способа сортировки, вечером выложу схему на чем остановились и где нужен этот тристабильный буф. На чем бы вы там не остановились, в современных FPGA нет внутри 3х стабильных шин, и соотвественно буферов. Если же вы их все же поставите (в схематике или в HDL - не важно), синтезатор при разводке вашей схемы поменяет их на мультиплексоры. Делайте сразу на мультиплексорах - они в FPGA физически есть
|
|
|
|
|
Apr 1 2012, 17:17
|
Участник

Группа: Участник
Сообщений: 28
Регистрация: 19-02-12
Пользователь №: 70 349

|
Возникла загвоздка с переходом от шины к одиночному входу(в мультиплекторе), скажите возможно просто отредактировать элемент и дорисовать ему шины ?
Сообщение отредактировал sakol - Apr 1 2012, 17:18
Эскизы прикрепленных изображений
|
|
|
|
|
Apr 2 2012, 09:36
|
Участник

Группа: Участник
Сообщений: 28
Регистрация: 19-02-12
Пользователь №: 70 349

|
ага, вот я отредактировал элемент внешне, теперь задаю его значения. Если задавать на vhdl такая фишка в описании прокатит? entity copy_of_m2_1 is Port ( D0 : in STD_LOGIC_VECTOR (15 downto 0); D1 : in STD_LOGIC_VECTOR (15 downto 0); S : in STD_LOGIC_VECTOR (1 downto 0); Q : out STD_LOGIC_VECTOR (15 downto 0)); end copy_of_m2_1;
architecture Behavioral of copy_of_m2_1 is
begin when S==0 then Q = D0; else when S==1 then Q = D1;
end Behavioral;
|
|
|
|
|
Apr 2 2012, 13:58
|
Участник

Группа: Участник
Сообщений: 28
Регистрация: 19-02-12
Пользователь №: 70 349

|
не прокатило  выдает такую ошибку - referencing symbol 'copy_of_m2_1' is out of date. entity copy_of_m2_1 is Port ( C(15:0) : in STD_LOGIC_VECTOR (15 downto 0); D(15:0) : in STD_LOGIC_VECTOR (15 downto 0); S : in STD_LOGIC_VECTOR (1 downto 0); Q : out STD_LOGIC_VECTOR (15 downto 0)); end copy_of_m2_1; architecture Behavioral of copy_of_m2_1 is process (C(15:0), D(15:0), S) begin case S is when '0' => O <= C(15:0); when '1' => O <= D(15:0); when others => NULL; end case; end process; end Behavioral;
Сообщение отредактировал sakol - Apr 2 2012, 14:15
|
|
|
|
|
Apr 2 2012, 17:52
|
Участник

Группа: Участник
Сообщений: 28
Регистрация: 19-02-12
Пользователь №: 70 349

|
покопался, теперь вот что выдает: ERROR:HDLCompilers:87 - "F:/xilinx/1111/variant.vf" line 159 Could not find module/primitive 'M2_1_HXILINX'
я так понял мне мой созданный элемент надо добавить в какую-то библиотеку?
|
|
|
|
|
Apr 3 2012, 11:41
|
Участник

Группа: Участник
Сообщений: 28
Регистрация: 19-02-12
Пользователь №: 70 349

|
именно эта мысль мне и пришла утром пока шел в универ  и загвоздка была именно в этом
|
|
|
|
|
Apr 8 2012, 15:18
|
Участник

Группа: Участник
Сообщений: 28
Регистрация: 19-02-12
Пользователь №: 70 349

|
подскажите пожалуйста, каким образом можно реализовать линию задержки? мне необходимо, чтобы сигнал с тригера поступал чз определенное время. нашел такой вариант
Эскизы прикрепленных изображений
|
|
|
|
|
Apr 8 2012, 15:54
|
Участник

Группа: Участник
Сообщений: 28
Регистрация: 19-02-12
Пользователь №: 70 349

|
а если мне нужна задержка, равная времени прохождению данных чз мультиплексор? это ж, наверное, просто так не измерить? и еще одна, равная прохождению всей схемы (по цепи ОС разрешает запись в регистр)
Сообщение отредактировал sakol - Apr 8 2012, 19:05
Эскизы прикрепленных изображений
|
|
|
|
|
Apr 23 2012, 19:47
|
Участник

Группа: Участник
Сообщений: 28
Регистрация: 19-02-12
Пользователь №: 70 349

|
спустя некоторое время вернулся к схеме  так и не получается правильно описать свой элемент (мультиплексор с шинами) подскажите пожалуйста, кто разбирается, как правильно описать: library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; ---- Uncomment the following library declaration if instantiating ---- any Xilinx primitives in this code. --library UNISIM; --use UNISIM.VComponents.all; entity copy_of_m2_1 is Port ( D0 : in STD_LOGIC_VECTOR (15 downto 0); D1 : in STD_LOGIC_VECTOR (15 downto 0); S : in STD_LOGIC_VECTOR (1 downto 0); Q : out STD_LOGIC_VECTOR (15 downto 0)); end copy_of_m2_1; architecture Behavioral of copy_of_m2_1 is begin when S==0 then Q = D0; else when S==1 then Q = D1; end Behavioral; выдает ошибку - ERROR:HDLParsers:164 - "F:/xilinx/1111/copy_of_m2_1.vhd" Line 40. parse error, unexpected WHEN
|
|
|
|
|
Apr 24 2012, 06:28
|

Местный
  
Группа: Свой
Сообщений: 235
Регистрация: 11-11-09
Пользователь №: 53 561

|
а нельзя написать как ниже? Код architecture Behavioral of copy_of_m2_1 is begin if S==0 then Q = D0; else -- elsif S==1 then Q = D1; end if; end Behavioral; ----------------------------------------------------- для справки: Код case expression is when choices => sequential statements when choices => sequential statements -- branches are allowed [ when others => sequential statements ] end case; Код case SEL is when ”00” => Z <= A; when ”01” => Z <= B; when ”10” => Z <= C; when ”11” => Z <= D; when others => Z <= ‘X’; end case;
Сообщение отредактировал stu - Apr 24 2012, 06:31
--------------------
Мы ведь работаем, чтобы жить, а не живем, чтобы работать??? ;)
|
|
|
|
|
Apr 24 2012, 06:40
|

МедвеД Инженер I
   
Группа: Свой
Сообщений: 816
Регистрация: 21-10-04
Пользователь №: 951

|
Цитата(stu @ Apr 24 2012, 15:28)  а нельзя написать как ниже? ............... нельзя, вы сами то проверили как оно синтезится+симулируется? з.ы. это vhdl а не verilog
--------------------
Cogito ergo sum
|
|
|
|
|
Apr 25 2012, 04:44
|
Знающий
   
Группа: Участник
Сообщений: 881
Регистрация: 21-03-10
Из: _// \\_
Пользователь №: 56 107

|
Пишите так: Код architecture Behavioral of copy_of_m2_1 is begin
Q <= D1 when to_x01(S(0))='1' else D0;
end Behavioral;
|
|
|
|
|
Apr 25 2012, 05:06
|

МедвеД Инженер I
   
Группа: Свой
Сообщений: 816
Регистрация: 21-10-04
Пользователь №: 951

|
Цитата(Hoodwin @ Apr 25 2012, 13:44)  Пишите так: ... что такое to_x01? и зачем оно там? Код architecture Behavioral of copy_of_m2_1 is begin Q <= D1 when S(0)='1' else D0; end Behavioral;
--------------------
Cogito ergo sum
|
|
|
|
|
Apr 25 2012, 05:32
|

Местный
  
Группа: Свой
Сообщений: 235
Регистрация: 11-11-09
Пользователь №: 53 561

|
Цитата(Postoroniy_V @ Apr 24 2012, 10:40)  нельзя, вы сами то проверили как оно синтезится+симулируется? з.ы. это vhdl а не verilog Совсем забыл VHDL. Исправил. Синтезируются в одинаковую схему Код architecture Behavioral of Vhdl1 is begin -- Q <= D0 when S=0 else D1; process (S) begin if S=0 then Q <= D0; else -- elsif S==1 then Q <= D1; end if; end process;
end Behavioral;
--------------------
Мы ведь работаем, чтобы жить, а не живем, чтобы работать??? ;)
|
|
|
|
|
Apr 25 2012, 07:35
|
Знающий
   
Группа: Участник
Сообщений: 881
Регистрация: 21-03-10
Из: _// \\_
Пользователь №: 56 107

|
Цитата(Postoroniy_V @ Apr 25 2012, 09:06)  что такое to_x01? и зачем оно там? Ну это такая функция, которая приводит 9 вариантов std_logic к 3: 0,1,X. помогает правильно моделировать проект, если в нем будут встречаться слабые 1 и 0 - H, L.
|
|
|
|
|
Apr 25 2012, 07:51
|

МедвеД Инженер I
   
Группа: Свой
Сообщений: 816
Регистрация: 21-10-04
Пользователь №: 951

|
Цитата(Hoodwin @ Apr 25 2012, 16:35)  Ну это такая функция, которая приводит 9 вариантов std_logic к 3: 0,1,X. помогает правильно моделировать проект, если в нем будут встречаться слабые 1 и 0 - H, L. в данном конкретном случае это крайне вредная информация для ТС. он мультиплексор описать не может. а тут ещё какие то 9 вариантов std_logic  к тому же в моделировании
--------------------
Cogito ergo sum
|
|
|
|
|
May 8 2012, 09:42
|
Участник

Группа: Участник
Сообщений: 28
Регистрация: 19-02-12
Пользователь №: 70 349

|
выскакивает такая ошибка: ERROR:Xst:2587 - Port <S0> of instance <XLXI_72> has different type in definition <copy_of_m2_1>. - имеет другой тип в определении
Подскажите пожалуйста, это мне надо другое обозначение в строке S0 : in STD_LOGIC_VECTOR (1 downto 0); ??
entity copy_of_m2_1 is Port ( D0 : in STD_LOGIC_VECTOR (15 downto 0); D1 : in STD_LOGIC_VECTOR (15 downto 0); S0 : in STD_LOGIC_VECTOR (1 downto 0); O : out STD_LOGIC_VECTOR (15 downto 0)); end copy_of_m2_1; architecture Behavioral of copy_of_m2_1 is begin O <= D0 when S0=0 else D1; process (S0) begin if S0=0 then O <= D0; else -- elsif S=0 then O <= D1; end if; end process; end Behavioral;
|
|
|
|
|
May 8 2012, 12:59
|
Участник

Группа: Участник
Сообщений: 28
Регистрация: 19-02-12
Пользователь №: 70 349

|
Цитата(ivanoffer @ May 8 2012, 12:51)  Оставьте что-то одно из двух
O <= D0 when S0=0 else D1;
или
process (S0) begin if S0=0 then O <= D0; else -- elsif S=0 then O <= D1; end if; end process; тоже самое выдает, попробовал и так, и так
|
|
|
|
|
May 10 2012, 13:39
|
Участник

Группа: Участник
Сообщений: 63
Регистрация: 14-12-11
Пользователь №: 68 851

|
Порт S0 правильно подключен в схематике? Может вы на него сигнал, а не шину завели?
|
|
|
|
|
May 10 2012, 14:25
|
Участник

Группа: Участник
Сообщений: 28
Регистрация: 19-02-12
Пользователь №: 70 349

|
вот схема, вроде как правильно S0 подключено, утром пришла такая мысль - S0 : in STD_LOGIC_VECTOR (1 downto 0); - может надо другое обозначение? вектор это ж когда множество данных проходит, а тут всего 0 или 1.
Эскизы прикрепленных изображений
|
|
|
|
|
May 11 2012, 05:06
|
Участник

Группа: Участник
Сообщений: 63
Регистрация: 14-12-11
Пользователь №: 68 851

|
Цитата(sakol @ May 10 2012, 18:25)  вот схема, вроде как правильно S0 подключено, утром пришла такая мысль - S0 : in STD_LOGIC_VECTOR (1 downto 0); - может надо другое обозначение? вектор это ж когда множество данных проходит, а тут всего 0 или 1. Ну, судя по схеме, неправильно подключено. К S0 подключен одиночный сигнал, а в блоке, S0 описан как шина. Вот и ошибка.
Сообщение отредактировал Barktail - May 11 2012, 05:07
|
|
|
|
|
May 11 2012, 06:29
|
Участник

Группа: Участник
Сообщений: 28
Регистрация: 19-02-12
Пользователь №: 70 349

|
он и должен быть как одиночный сигнал, только как его описать теперь правильно?
|
|
|
|
|
May 11 2012, 06:36
|
Участник

Группа: Участник
Сообщений: 63
Регистрация: 14-12-11
Пользователь №: 68 851

|
Цитата(sakol @ May 11 2012, 10:29)  он и должен быть как одиночный сигнал, только как его описать теперь правильно? S0 : in STD_LOGIC
|
|
|
|
|
May 11 2012, 07:23
|
Участник

Группа: Участник
Сообщений: 28
Регистрация: 19-02-12
Пользователь №: 70 349

|
а, ну это я вчера в книге почитал, поставил так, только теперь надо по другому описать S0. ERROR:HDLParsers:808 - "F:/xilinx/1111/copy_of_m2_1.vhd" Line 39. = can not have such operands in this context. ERROR:HDLParsers:808 - "F:/xilinx/1111/copy_of_m2_1.vhd" Line 42. = can not have such operands in this context. это линии O <= D0 when S0=0 else D1; и if S0=0 then
entity copy_of_m2_1 is Port ( D0 : in STD_LOGIC_VECTOR (15 downto 0); D1 : in STD_LOGIC_VECTOR (15 downto 0); S0 : in STD_LOGIC; O : out STD_LOGIC_VECTOR (15 downto 0)); end copy_of_m2_1;
architecture Behavioral of copy_of_m2_1 is begin O <= D0 when S0=0 else D1; process (S0) begin if S0=0 then O <= D0; else -- elsif S=0 then O <= D1; end if; end process; end Behavioral;
|
|
|
|
|
May 11 2012, 07:45
|
Участник

Группа: Участник
Сообщений: 63
Регистрация: 14-12-11
Пользователь №: 68 851

|
потому что сигнал надо сравнивать не с числом. Правильно будет S0 = '0'. Сигнал сравнивают с логическим нулем. И процесс можно убрать. Достаточно оставить только O <= D0 when S0='0' else D1;
Сообщение отредактировал Barktail - May 11 2012, 07:46
|
|
|
|
|
May 11 2012, 08:46
|
Участник

Группа: Участник
Сообщений: 28
Регистрация: 19-02-12
Пользователь №: 70 349

|
воооо, заррработало! спасибо за четкое обьяснение! я пробовал делать так с ковычками, но тогда у меня в описании был вектор теперь займусь отладкой самой схемы и выставления временных параметров
Сообщение отредактировал sakol - May 11 2012, 08:59
|
|
|
|
|
May 20 2012, 17:22
|
Участник

Группа: Участник
Сообщений: 28
Регистрация: 19-02-12
Пользователь №: 70 349

|
Народ, подскажите пожалуйста, я могу для проверки задать свои числа (на входе), чтобы проверить схему ? вот на эти элементы. (они какбы подразумевают внешние данные)
Эскизы прикрепленных изображений
|
|
|
|
|
May 21 2012, 09:24
|
Участник

Группа: Участник
Сообщений: 63
Регистрация: 14-12-11
Пользователь №: 68 851

|
Цитата(sakol @ May 20 2012, 21:22)  Народ, подскажите пожалуйста, я могу для проверки задать свои числа (на входе), чтобы проверить схему ?
вот на эти элементы. (они какбы подразумевают внешние данные) можете. Создаете VHDL Test Bench и прописываете воздействия.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|