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

 
 
> помогите правильно правильно составить схему, выделение регистра с максимальным значением
sakol
сообщение Mar 12 2012, 14:37
Сообщение #1


Участник
*

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



добрый день.
почитал темки с сортировкой, везде реализация кодовая, а у меня задача состоит в следующем:
есть на входе сигналы (частота пока не важна и не известна), к примеру 4 регистра на каждом свое значение. Необходимо из них выбрать регистр с максимальным значением и выдать его "адрес".
Вопрос - можно ли это реализовать схематически? делаю в ISE 9.2 (ну вот так требует препод)

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

Вот как я начал делать. Подскажите чего не хватает, нужен ли счетчик (или он входит в регист) и как обозначается ключ, чтобы соединять/разьединять питание к регистрам.

На какой плате это делать?
Go to the top of the page
 
+Quote Post
4 страниц V   1 2 3 > »   
Start new topic
Ответов (1 - 59)
DmitryR
сообщение Mar 13 2012, 08:13
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770



Код
always @( * )
   begin
      max12<=(in1>in2) ? in1:in2;
      max34<=(in3>in4) ? in3:in4;
      max12adr<=(in1>in2) ? 1:2;
      max34adr<=(in3>in4) ? 3:4;
      maxadr<=(max12>max34) ? max12adr:max34adr;
   end
Go to the top of the page
 
+Quote Post
XVR
сообщение Mar 13 2012, 09:39
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(sakol @ Mar 12 2012, 18:37) *
Вопрос - можно ли это реализовать схематически? делаю в ISE 9.2 (ну вот так требует препод)

Можно

Цитата
Вот как я начал делать.
Что то вы не то начали делать

Цитата
Подскажите чего не хватает, нужен ли счетчик (или он входит в регист) и как обозначается ключ, чтобы соединять/разьединять питание к регистрам.
Судя по вопросам не хватает букваря по цифровой схемотехнике.

Цитата
На какой плате это делать?
На виртуальной. Или препод от вас требует рабочее 'железо'?


Go to the top of the page
 
+Quote Post
sakol
сообщение Mar 13 2012, 11:09
Сообщение #4


Участник
*

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



Цитата(XVR @ Mar 13 2012, 13:39) *
Что то вы не то начали делать

Судя по вопросам не хватает букваря по цифровой схемотехнике.

На виртуальной. Или препод от вас требует рабочее 'железо'?


на виртуальной.
ни я ни препод (ему 72 года) с этой прогой не работали, но кто-то ему рассказал, что тут можно реализовать с большим быстродействием. Вот и загрузил меня.

вот насчет букваря тут четко сказано, у меня на бумаге расписанно что надо сделать, а название элементов в ксилинксе не нахожу некоторых


DmitryR спасибо за код, чтобы его записать мне надо в том же проекте добавить new source-VHDL module ?
или надо новый делать?
Go to the top of the page
 
+Quote Post
DmitryR
сообщение Mar 13 2012, 11:17
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770



Это Verilog, но сути не меняет. Делаете модуль на языке высокого уровня, компилируете, смотрите схему RTL. Я в RTL сам не уверен, что быстро бы нарисовал, а на Verilog тут при отсутствии опыта на час дела.
Go to the top of the page
 
+Quote Post
sazh
сообщение Mar 13 2012, 12:03
Сообщение #6


Гуру
******

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



Цитата(sakol @ Mar 13 2012, 14:09) *
а название элементов в ксилинксе не нахожу некоторых


Найдите книгу Зотова, там все примитивы и макросы рассписаны.
Если это учебный проект, то Вы мыслили в правильном направлении.

Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
sakol
сообщение Mar 13 2012, 17:23
Сообщение #7


Участник
*

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



благодарю за советы, особенно за книгу!
скачал, сижу читаю sm.gif
Go to the top of the page
 
+Quote Post
XVR
сообщение Mar 13 2012, 19:01
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(sakol @ Mar 13 2012, 15:09) *
на виртуальной.
ни я ни препод (ему 72 года) с этой прогой не работали, но кто-то ему рассказал, что тут можно реализовать с большим быстродействием. Вот и загрузил меня.
Эта прога предназначенна для составления прошивок для FPGA и CPLD фирмы Xilinx. Если вам не надо делать реальную схему, то просто ставите в проекте кристал, какой понравится (например Spartan 3A) и все.
И еще - вам нужен дезайн именно в виде схемы, или и виде Verilog файла подойдет? Второе будет попроще (да вам тут уже все написали)

Go to the top of the page
 
+Quote Post
sakol
сообщение Mar 13 2012, 19:11
Сообщение #9


Участник
*

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



дизайн ввиде схемы, так и нагляднее и обьяснить преподу проще, т.к. скорее всего будет дальнейшее применение всего этого.
вот на схемке sazh:
1. в ксилинксе тоже есть такие инверторы как в квартусе?
2. что это за обозначения на входе (а,б,с,д) - так обозначаются регистры или это для наглядности?
Go to the top of the page
 
+Quote Post
XVR
сообщение Mar 14 2012, 07:29
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(sakol @ Mar 13 2012, 23:11) *
дизайн ввиде схемы, так и нагляднее и обьяснить преподу проще, т.к. скорее всего будет дальнейшее применение всего этого.
Если будет 'дальнейшее применение', то делать дезайн в виде схемы категорически не рекомендуется. HDL дезайн буден на порядок меньше по объему и ввод его будет на порядок проще и быстрее. Схемотехнический ввод де-факто мертв (и уже давно)

Go to the top of the page
 
+Quote Post
iosifk
сообщение Mar 14 2012, 08:25
Сообщение #11


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(sakol @ Mar 13 2012, 15:09) *
на виртуальной.
ни я ни препод (ему 72 года) с этой прогой не работали, но кто-то ему рассказал, что тут можно реализовать с большим быстродействием. Вот и загрузил меня.


может преподу чем-то помочь надо? Спросите его, пусть напишет...
Вы в каком городе? Можете мне хоть в личку написать...


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
sakol
сообщение Mar 14 2012, 14:07
Сообщение #12


Участник
*

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



Цитата(iosifk @ Mar 14 2012, 12:25) *
может преподу чем-то помочь надо? Спросите его, пусть напишет...
Вы в каком городе? Можете мне хоть в личку написать...


отправлять ЛС мне еще нельзя sm.gif
я из Донецка.
с преподавателем пообщаюсь, выясню более подробно, позже отпишусь
Go to the top of the page
 
+Quote Post
sakol
сообщение Mar 15 2012, 22:41
Сообщение #13


Участник
*

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



а какие элементы необходимы, чтобы на регистре появились импульсы? (см. первый рис.)
кроме vcc надо наверное ibuf еще добавить?
Go to the top of the page
 
+Quote Post
XVR
сообщение Mar 16 2012, 06:31
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(sakol @ Mar 16 2012, 02:41) *
а какие элементы необходимы, чтобы на регистре появились импульсы? (см. первый рис.)
Надо сделать test bench. Сами по себе импульсы не появятся

Go to the top of the page
 
+Quote Post
sakol
сообщение Mar 19 2012, 14:53
Сообщение #15


Участник
*

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



Цитата(XVR @ Mar 16 2012, 09:31) *
Надо сделать test bench. Сами по себе импульсы не появятся


не, я имею ввиду, что должно входить в состав:
вот регистр, к нему надо подать питание, и всё?
наверное нужно еще добавить счетчик, тактовый генератор?
Go to the top of the page
 
+Quote Post
XVR
сообщение Mar 20 2012, 09:45
Сообщение #16


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(sakol @ Mar 19 2012, 18:53) *
не, я имею ввиду, что должно входить в состав:
вот регистр, к нему надо подать питание, и всё?
Про питание забудьте - оно в FPGA уже встроенно
Цитата
наверное нужно еще добавить счетчик, тактовый генератор?
Тесты пишутся либо в виде временных диаграмм, либо в виде скриптов. Последние могут быть как в виде tcl скриптов для симулятора, так и в виде Verilog (или VHDL) функциональных модулей.
Go to the top of the page
 
+Quote Post
sakol
сообщение Mar 21 2012, 21:19
Сообщение #17


Участник
*

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




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

Народ, подскажите пожалуйста - этот буфер не могу найти, это потому что надо выбрать плату где такой буфер поддерживается или версия проги старенькая?
использую ISE 9.2
Go to the top of the page
 
+Quote Post
andrew_b
сообщение Mar 22 2012, 04:43
Сообщение #18


Профессионал
*****

Группа: Свой
Сообщений: 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.
Go to the top of the page
 
+Quote Post
XVR
сообщение Mar 22 2012, 06:16
Сообщение #19


Гуру
******

Группа: Свой
Сообщений: 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 в набор мультиплексоров, но закладываться на это я бы не стал

Go to the top of the page
 
+Quote Post
sakol
сообщение Mar 22 2012, 07:11
Сообщение #20


Участник
*

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



преподавателю какраз и нужно, чтобы буфер имел переход в 3-е состояние.
сегодня поговорю с ним, может что-то изменится.
суть нашей задачи - создание нового способа сортировки, вечером выложу схему на чем остановились и где нужен этот тристабильный буф.
Go to the top of the page
 
+Quote Post
XVR
сообщение Mar 22 2012, 09:04
Сообщение #21


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



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

Go to the top of the page
 
+Quote Post
sakol
сообщение Mar 22 2012, 14:52
Сообщение #22


Участник
*

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



понял, спасибо за обьяснение sm.gif
Go to the top of the page
 
+Quote Post
sakol
сообщение Apr 1 2012, 17:17
Сообщение #23


Участник
*

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



Возникла загвоздка с переходом от шины к одиночному входу(в мультиплекторе), скажите возможно просто отредактировать элемент и дорисовать ему шины ? sm.gif

Сообщение отредактировал sakol - Apr 1 2012, 17:18
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
XVR
сообщение Apr 2 2012, 08:25
Сообщение #24


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Нет, вам нужен соотвествующий элемент. M2_1 это мультиплексор для проводов, а вам нужен для шин. Посмотрите в библиотеке или сделайте сами (у вас внутри этого элемента будет 16 штук M2_1)

Go to the top of the page
 
+Quote Post
sakol
сообщение Apr 2 2012, 09:36
Сообщение #25


Участник
*

Группа: Участник
Сообщений: 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;
Go to the top of the page
 
+Quote Post
XVR
сообщение Apr 2 2012, 11:55
Сообщение #26


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Наверное прокатит. (Я больше по Verilog специалист sm.gif )
Go to the top of the page
 
+Quote Post
sakol
сообщение Apr 2 2012, 13:58
Сообщение #27


Участник
*

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



не прокатило sad.gif

выдает такую ошибку - 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
Go to the top of the page
 
+Quote Post
XVR
сообщение Apr 2 2012, 16:11
Сообщение #28


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Видимо надо что то где то перегенерировать. Это ошибка не из VHDL
Go to the top of the page
 
+Quote Post
sakol
сообщение Apr 2 2012, 17:52
Сообщение #29


Участник
*

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



покопался, теперь вот что выдает:
ERROR:HDLCompilers:87 - "F:/xilinx/1111/variant.vf" line 159 Could not find module/primitive 'M2_1_HXILINX'

я так понял мне мой созданный элемент надо добавить в какую-то библиотеку?
Go to the top of the page
 
+Quote Post
XVR
сообщение Apr 3 2012, 10:30
Сообщение #30


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(sakol @ Apr 2 2012, 21:52) *
покопался, теперь вот что выдает:
ERROR:HDLCompilers:87 - "F:/xilinx/1111/variant.vf" line 159 Could not find module/primitive 'M2_1_HXILINX'
Судя по сообщению в схематике ваш модуль называется M2_1_HXILINX, а не copy_of_m2_1 (как у вас в VHDL)

Go to the top of the page
 
+Quote Post
sakol
сообщение Apr 3 2012, 11:41
Сообщение #31


Участник
*

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



именно эта мысль мне и пришла утром пока шел в универ sm.gif
и загвоздка была именно в этом
Go to the top of the page
 
+Quote Post
sakol
сообщение Apr 8 2012, 15:18
Сообщение #32


Участник
*

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



подскажите пожалуйста, каким образом можно реализовать линию задержки?
мне необходимо, чтобы сигнал с тригера поступал чз определенное время.
нашел такой вариант
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
XVR
сообщение Apr 8 2012, 15:37
Сообщение #33


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(sakol @ Apr 8 2012, 19:18) *
подскажите пожалуйста, каким образом можно реализовать линию задержки?
Если вам нужна задержка на целое число тактов, то схема правильная (1 регистр в цепи дает задержку на 1 такт)

Go to the top of the page
 
+Quote Post
sakol
сообщение Apr 8 2012, 15:54
Сообщение #34


Участник
*

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



а если мне нужна задержка, равная времени прохождению данных чз мультиплексор? это ж, наверное, просто так не измерить? и еще одна, равная прохождению всей схемы (по цепи ОС разрешает запись в регистр)



Сообщение отредактировал sakol - Apr 8 2012, 19:05
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
XVR
сообщение Apr 9 2012, 09:22
Сообщение #35


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(sakol @ Apr 8 2012, 19:54) *
а если мне нужна задержка, равная времени прохождению данных чз мультиплексор?
Если работоспособность вашей схемы зависит от таких задержек, то ваша схема работать вообще не будет. Читайте букварь на тему 'синхронный дезайн' (других в FPGA не бывает)

Go to the top of the page
 
+Quote Post
sakol
сообщение Apr 9 2012, 14:56
Сообщение #36


Участник
*

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



понял sm.gif
Go to the top of the page
 
+Quote Post
sakol
сообщение Apr 23 2012, 19:47
Сообщение #37


Участник
*

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



спустя некоторое время вернулся к схеме sm.gif
так и не получается правильно описать свой элемент (мультиплексор с шинами)
подскажите пожалуйста, кто разбирается, как правильно описать:
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
Go to the top of the page
 
+Quote Post
andrew_b
сообщение Apr 24 2012, 04:22
Сообщение #38


Профессионал
*****

Группа: Свой
Сообщений: 1 975
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757



Цитата(sakol @ Apr 23 2012, 23:47) *
так и не получается правильно описать свой элемент (мультиплексор с шинами)
Может, в книжку заглянуть, а не методом тыка?
Go to the top of the page
 
+Quote Post
stu
сообщение Apr 24 2012, 06:28
Сообщение #39


Местный
***

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


--------------------
Мы ведь работаем, чтобы жить, а не живем, чтобы работать??? ;)
Go to the top of the page
 
+Quote Post
Postoroniy_V
сообщение Apr 24 2012, 06:40
Сообщение #40


МедвеД Инженер I
****

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



Цитата(stu @ Apr 24 2012, 15:28) *
а нельзя написать как ниже?
...............

нельзя, вы сами то проверили как оно синтезится+симулируется?
з.ы. это vhdl а не verilog


--------------------
Cogito ergo sum
Go to the top of the page
 
+Quote Post
Hoodwin
сообщение Apr 25 2012, 04:44
Сообщение #41


Знающий
****

Группа: Участник
Сообщений: 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;

Go to the top of the page
 
+Quote Post
Postoroniy_V
сообщение Apr 25 2012, 05:06
Сообщение #42


МедвеД Инженер 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
Go to the top of the page
 
+Quote Post
stu
сообщение Apr 25 2012, 05:32
Сообщение #43


Местный
***

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


--------------------
Мы ведь работаем, чтобы жить, а не живем, чтобы работать??? ;)
Go to the top of the page
 
+Quote Post
Hoodwin
сообщение Apr 25 2012, 07:35
Сообщение #44


Знающий
****

Группа: Участник
Сообщений: 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.
Go to the top of the page
 
+Quote Post
Postoroniy_V
сообщение Apr 25 2012, 07:51
Сообщение #45


МедвеД Инженер 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 biggrin.gif к тому же в моделировании


--------------------
Cogito ergo sum
Go to the top of the page
 
+Quote Post
andrew_b
сообщение Apr 25 2012, 08:45
Сообщение #46


Профессионал
*****

Группа: Свой
Сообщений: 1 975
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757



Цитата(stu @ Apr 25 2012, 09:32) *
Синтезируются в одинаковую схему
Описание с процессом будет неправильно симулироваться.
Go to the top of the page
 
+Quote Post
sakol
сообщение Apr 28 2012, 09:57
Сообщение #47


Участник
*

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



ниодин из вариантов не сработал sad.gif
Go to the top of the page
 
+Quote Post
sakol
сообщение May 8 2012, 09:42
Сообщение #48


Участник
*

Группа: Участник
Сообщений: 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;
Go to the top of the page
 
+Quote Post
ivanoffer
сообщение May 8 2012, 09:51
Сообщение #49


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

Группа: Участник
Сообщений: 120
Регистрация: 21-07-11
Пользователь №: 66 348



Оставьте что-то одно из двух

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;
Go to the top of the page
 
+Quote Post
sakol
сообщение May 8 2012, 12:59
Сообщение #50


Участник
*

Группа: Участник
Сообщений: 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;


тоже самое выдает, попробовал и так, и так
Go to the top of the page
 
+Quote Post
Barktail
сообщение May 10 2012, 13:39
Сообщение #51


Участник
*

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



Порт S0 правильно подключен в схематике? Может вы на него сигнал, а не шину завели?
Go to the top of the page
 
+Quote Post
sakol
сообщение May 10 2012, 14:25
Сообщение #52


Участник
*

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



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

Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
Barktail
сообщение May 11 2012, 05:06
Сообщение #53


Участник
*

Группа: Участник
Сообщений: 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
Go to the top of the page
 
+Quote Post
sakol
сообщение May 11 2012, 06:29
Сообщение #54


Участник
*

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



он и должен быть как одиночный сигнал, только как его описать теперь правильно?
Go to the top of the page
 
+Quote Post
Barktail
сообщение May 11 2012, 06:36
Сообщение #55


Участник
*

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



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

S0 : in STD_LOGIC
Go to the top of the page
 
+Quote Post
sakol
сообщение May 11 2012, 07:23
Сообщение #56


Участник
*

Группа: Участник
Сообщений: 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;
Go to the top of the page
 
+Quote Post
Barktail
сообщение May 11 2012, 07:45
Сообщение #57


Участник
*

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



потому что сигнал надо сравнивать не с числом. Правильно будет S0 = '0'. Сигнал сравнивают с логическим нулем. И процесс можно убрать. Достаточно оставить только
O <= D0 when S0='0' else D1;

Сообщение отредактировал Barktail - May 11 2012, 07:46
Go to the top of the page
 
+Quote Post
sakol
сообщение May 11 2012, 08:46
Сообщение #58


Участник
*

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



воооо, заррработало! 08.gif
спасибо за четкое обьяснение!

я пробовал делать так с ковычками, но тогда у меня в описании был вектор

теперь займусь отладкой самой схемы и выставления временных параметров

Сообщение отредактировал sakol - May 11 2012, 08:59
Go to the top of the page
 
+Quote Post
sakol
сообщение May 20 2012, 17:22
Сообщение #59


Участник
*

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



Народ, подскажите пожалуйста, я могу для проверки задать свои числа (на входе), чтобы проверить схему ?

вот на эти элементы. (они какбы подразумевают внешние данные)

Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
Barktail
сообщение May 21 2012, 09:24
Сообщение #60


Участник
*

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



Цитата(sakol @ May 20 2012, 21:22) *
Народ, подскажите пожалуйста, я могу для проверки задать свои числа (на входе), чтобы проверить схему ?

вот на эти элементы. (они какбы подразумевают внешние данные)

можете. Создаете VHDL Test Bench и прописываете воздействия.
Go to the top of the page
 
+Quote Post

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

 


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


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