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

 
 
> Вопрос новичка по VHDL, Не работает "after Xms"
asya
сообщение May 11 2005, 01:06
Сообщение #1


Участник
*

Группа: Свой
Сообщений: 43
Регистрация: 4-02-05
Пользователь №: 2 412



Вот такой вот код написал чтобы проверить работу директивы (или как это еще назвать) after.
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity top is
Port ( a : in std_logic;
b : out std_logic);
end top;

architecture Behavioral of top is
begin
b<=a after 1000ms;
end Behavioral;
И проблема в том, что не работает. Вернее работает, но не так, как я себе это представлял. Происходит мгновенное срабатывание, а нес задержкой в одну секунду. (проверял на глаз, поэтому и поставил такую большую задержку)
Что не так?
Пользуюсь Xilinx ISE и Spartan3.
ЗЫЖ ногами не пинайте если я тут глупости наговорил, я новичек еще. smile.gif
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
makc
сообщение May 11 2005, 05:16
Сообщение #2


Гуру
******

Группа: Админы
Сообщений: 3 621
Регистрация: 18-10-04
Из: Москва
Пользователь №: 904



Как уже правильно заметил des00, это несинтезируемая конструкция, т.е. в реальном железе такая конструкция отражена быть не может. В каком режиме Вы моделируете? И чем пользуетесь для моделирования?


--------------------
BR, Makc
В недуге рождены, вскормлены тленом, подлежим распаду. (с) У.Фолкнер.
Go to the top of the page
 
+Quote Post
asya
сообщение May 11 2005, 11:17
Сообщение #3


Участник
*

Группа: Свой
Сообщений: 43
Регистрация: 4-02-05
Пользователь №: 2 412



Цитата(makc @ May 11 2005, 09:16)
Как уже правильно заметил des00, это несинтезируемая конструкция, т.е. в реальном железе такая конструкция отражена быть не может. В каком режиме Вы моделируете? И чем пользуетесь для моделирования?
*

вообще у меня стоит multisim для моделирования. но я им не пользуюсь. сразу синтезирую и заливаю в fpga. и там уже на практике смотрю, что получилось...
про несинтезируемость понятно. очередная несинтезирпуемая фигня. а обьясните мне тогда, зачем вообще нужны несинтезируемые фичи типа этой? где и зачем оно используется? и еще, я видел, что люди так синхронные дизайны делают используя эту конструкцию... (а если она несинтесируемая, то о какой синхронности можэно говорить?)
опять же. может глупость сказал. smile.gif
Go to the top of the page
 
+Quote Post
des00
сообщение May 11 2005, 13:21
Сообщение #4


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(asya @ May 11 2005, 06:17)
и еще, я видел, что люди так синхронные дизайны делают используя эту конструкцию... (а если она несинтесируемая, то о какой синхронности можэно говорить?)
опять же. может глупость сказал. smile.gif
*

немного добавлю Синхронный дизайн это стиль проектирования когда все модули одного блока сидят на одной частоте. А те люди скорее всего использовали данную конструкцию в тестбенче для генератора клока smile.gif))


--------------------
Go to the top of the page
 
+Quote Post
asya
сообщение May 11 2005, 20:54
Сообщение #5


Участник
*

Группа: Свой
Сообщений: 43
Регистрация: 4-02-05
Пользователь №: 2 412



Цитата(des00 @ May 11 2005, 17:21)
немного добавлю Синхронный дизайн это стиль проектирования когда все модули одного блока сидят на одной частоте. А те люди скорее всего использовали данную конструкцию в тестбенче для генератора клока smile.gif))
*

А как этим делом можно клок генерировать?
Go to the top of the page
 
+Quote Post
anatol1983
сообщение May 11 2005, 23:37
Сообщение #6


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

Группа: Свой
Сообщений: 96
Регистрация: 16-02-05
Из: РОССИЯ г. Пенза
Пользователь №: 2 690



Цитата(asya @ May 12 2005, 00:54)
Цитата(des00 @ May 11 2005, 17:21)
немного добавлю Синхронный дизайн это стиль проектирования когда все модули одного блока сидят на одной частоте. А те люди скорее всего использовали данную конструкцию в тестбенче для генератора клока smile.gif))
*

А как этим делом можно клок генерировать?
*



в архитектурном теле тестбенча описывается сигнал CLK и ему присваивается начальное значение и в инвертируется через определённое время:

Код
architecture Behavioral of TestBentch is
.......
signal clk:std_logic:='0';
.......
begin
.......
clk<=not clk after 30 ns;
.......

а вообще про язык VHDL можно почитать здесь http://www.kvantn.com.ua/resourse/All/VHDL/VHDL_context.html . Здесь очень хорошо рассказано о VHDL в том числе и о тестбенчах
Go to the top of the page
 
+Quote Post
asya
сообщение May 12 2005, 00:29
Сообщение #7


Участник
*

Группа: Свой
Сообщений: 43
Регистрация: 4-02-05
Пользователь №: 2 412



Цитата(anatol1983 @ May 12 2005, 03:37)
в архитектурном теле тестбенча описывается сигнал CLK и ему присваивается начальное значение и в инвертируется через определённое время:

а вообще про язык VHDL можно почитать здесь http://www.kvantn.com.ua/resourse/All/VHDL/VHDL_context.html .  Здесь очень хорошо рассказано о VHDL в том числе и о тестбенчах
*

насчет клока - понятно. спасибо.
насчет линки - огромное спасибо. уже читаю. smile.gif
Go to the top of the page
 
+Quote Post
asya
сообщение May 12 2005, 02:10
Сообщение #8


Участник
*

Группа: Свой
Сообщений: 43
Регистрация: 4-02-05
Пользователь №: 2 412



прочитал про процессы. т.е. process.
я правильно понял? т.е. если в теле архитектуры несколько процессов - то все процессы выполняются параллельно. а внутри каждого процесса все идет последовательно?
и еще, можно ли написать процесс в процессе?
Go to the top of the page
 
+Quote Post
des00
сообщение May 12 2005, 04:28
Сообщение #9


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(asya @ May 11 2005, 21:10)
прочитал про процессы. т.е. process.
я правильно понял? т.е. если в теле архитектуры несколько процессов - то все процессы выполняются параллельно. а внутри каждого процесса все идет последовательно?
и еще, можно ли написать процесс в процессе?
*

ИМХО нет, если нужно расписать последовательную логигуку то пишщемм ее вообще без процесса. А процесс это блок который отслеживает изменения определенного сигнала и в соответсвии с этим сигналом идет измененрие работы схемы.
В зависимости от списка чуствительности и от логигки в процесее можно описать либо асинхронный либо синхронный блок.
ИМХО так.


--------------------
Go to the top of the page
 
+Quote Post
asya
сообщение May 12 2005, 21:19
Сообщение #10


Участник
*

Группа: Свой
Сообщений: 43
Регистрация: 4-02-05
Пользователь №: 2 412



Цитата(des00 @ May 12 2005, 08:28)
ИМХО нет, если нужно расписать последовательную логигуку то пишщемм ее вообще без процесса. А процесс это блок который отслеживает изменения определенного сигнала и в соответсвии с этим сигналом идет измененрие работы схемы.
В зависимости от списка чуствительности и от логигки в процесее можно описать либо асинхронный либо синхронный блок.
ИМХО так.
*

хмммм. теперь совсем запутался. т.е. внутри процесса не последовательное выполнение? а снаружи последовательное? поясните, плз.
Go to the top of the page
 
+Quote Post
anatol1983
сообщение May 12 2005, 23:34
Сообщение #11


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

Группа: Свой
Сообщений: 96
Регистрация: 16-02-05
Из: РОССИЯ г. Пенза
Пользователь №: 2 690



Цитата(asya @ May 13 2005, 01:19)
Цитата(des00 @ May 12 2005, 08:28)
ИМХО нет, если нужно расписать последовательную логигуку то пишщемм ее вообще без процесса. А процесс это блок который отслеживает изменения определенного сигнала и в соответсвии с этим сигналом идет измененрие работы схемы.
В зависимости от списка чуствительности и от логигки в процесее можно описать либо асинхронный либо синхронный блок.
ИМХО так.
*

хмммм. теперь совсем запутался. т.е. внутри процесса не последовательное выполнение? а снаружи последовательное? поясните, плз.
*



Ну что тут не понятного? VHDL описание состоит из двух частей: 1)интерфейсная часть; 2)архитектурная. В интерфейсной оприсываются порты, константы и тд и тп. В архитектурной части описывается поведение схемы. Сам VHDL-язык параллельного програмирования. Все операторы языка VHDL делятся на последовательные и параллельные, т.е каждый параллельный оператор выполняется отдельно. Последовательные опрераторы должны использоваться только в операторе process (или в процедурах и функциях). Сам же он (process) является параллельным оператором. Т.е. если в описании есть оператор process и к примеру оператор назначения (<=), то исполнятся они будут параллельно, а вот операторы process'а -последовательно
Одну и туже схему можно описать как при помощи process так и при помощи <=. В Вашем случае, комб. логику можно описать так (логическое И):

Код
--вариант с использованием <=
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity qwqq is
   Port ( a,b : in std_logic;c : out std_logic);
end qwqq;

architecture Behavioral of qwqq is
begin
c<=a and b;--параллельный оператор
end;

--вариант с использованием process
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity qwqq is
   Port ( a,b : in std_logic;c : out std_logic);
end qwqq;

process(a,b)--параллельный оператор process реагирующий на изменение портов a и bk
begin
c<=a and b;--последовательный оператор
end process;
end Behavioral;

оба этих описания приведут к синтезу элемента "логическое И" с двумя входами
Go to the top of the page
 
+Quote Post
asya
сообщение May 13 2005, 01:36
Сообщение #12


Участник
*

Группа: Свой
Сообщений: 43
Регистрация: 4-02-05
Пользователь №: 2 412



Цитата(anatol1983 @ May 13 2005, 03:34)
Ну что тут не понятного? VHDL описание состоит из двух частей: 1)интерфейсная часть; 2)архитектурная. В интерфейсной оприсываются порты, константы и тд и тп. В архитектурной части описывается поведение схемы. Сам VHDL-язык параллельного програмирования. Все операторы языка VHDL делятся на последовательные и параллельные, т.е каждый параллельный оператор выполняется отдельно. Последовательные опрераторы должны использоваться только в операторе process (или в процедурах и функциях). Сам же он (process) является параллельным оператором. Т.е. если в описании есть оператор process и к примеру оператор назначения (<=), то исполнятся они будут параллельно, а вот операторы process'а -последовательно
Одну и туже схему можно описать как при помощи process так и при помощи <=. В Вашем случае, комб. логику можно описать так (логическое И):
*

вот так все понятно. (как я и понял изначально).
меня просто вот эта фраза в заблуждение ввела:
Цитата
ИМХО нет, если нужно расписать последовательную логигуку то пишщемм ее вообще без процесса.
Go to the top of the page
 
+Quote Post
anatol1983
сообщение May 14 2005, 23:17
Сообщение #13


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

Группа: Свой
Сообщений: 96
Регистрация: 16-02-05
Из: РОССИЯ г. Пенза
Пользователь №: 2 690



Цитата(asya @ May 13 2005, 05:36)
вот так все понятно. (как я и понял изначально).
меня просто вот эта фраза в заблуждение ввела:
Цитата
ИМХО нет, если нужно расписать последовательную логигуку то пишщемм ее вообще без процесса.

*



...ну тут зависит от пристрастий программиста. Разница между описаниями приведёнными выше заключается в процессе моделирования (об моделировании VHDL-описаний см. ссылку, которую я давал выше) , а схема одна и таже smile.gif
Go to the top of the page
 
+Quote Post
asya
сообщение May 15 2005, 12:54
Сообщение #14


Участник
*

Группа: Свой
Сообщений: 43
Регистрация: 4-02-05
Пользователь №: 2 412



Код
С<=A+B;  -- отображается в сумматор;
process(clk) begin
  if rising_edge(clk)  then
         if ena='1';  then
               С<=B;
         end if;
   end if;
end process; -- отображается в регистр с разрешением записи, а
process(clk) begin
  if rising_edge(clk) then
       if ena='1' then
           С<=B+А;
       end if
;
  end if;
end process; -- отображается в тот же сумматор с тем же регистром на выходе.

тут в обоих процессах в скобках сигнал ena не указан. это ведь нехорошо, так? или я что-то не понял? (пример из той книги)
кроме того в первом процессе строка: if ena='1';  then... точка с запятой ведь там не нужна? и с ней не будет работать?
да и вообще примера толком не понял. зачем так было делать? по одному и тому же событию в один и тот же выход подаются разные сигналы.
пример этот внизу страницы тут
Go to the top of the page
 
+Quote Post
anatol1983
сообщение May 15 2005, 23:57
Сообщение #15


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

Группа: Свой
Сообщений: 96
Регистрация: 16-02-05
Из: РОССИЯ г. Пенза
Пользователь №: 2 690



Цитата(asya @ May 15 2005, 16:54)
Код
С<=A+B;  -- отображается в сумматор;
process(clk) begin
  if rising_edge(clk)  then
         if ena='1';  then
               С<=B;
         end if;
   end if;
end process; -- отображается в регистр с разрешением записи, а
process(clk) begin
  if rising_edge(clk) then
       if ena='1' then
           С<=B+А;
       end if
;
  end if;
end process; -- отображается в тот же сумматор с тем же регистром на выходе.

тут в обоих процессах в скобках сигнал ena не указан. это ведь нехорошо, так? или я что-то не понял? (пример из той книги)
кроме того в первом процессе строка: if ena='1';  then... точка с запятой ведь там не нужна? и с ней не будет работать?
да и вообще примера толком не понял. зачем так было делать? по одному и тому же событию в один и тот же выход подаются разные сигналы.
пример этот внизу страницы тут
*


Точки с запятой там не должно быть - это опечатка, но не надо строго придераться к автору (я встречал в книги в которых были ТАКИЕ опечатки, что просто жуть), к тому же на орфографические ошибки всегда укажет моделятор или синтезатор smile.gif Два process'а здесь надо расматривать как два самостоятельных описания, что касается сигнала ena, включай его в список или не включай результат будет один и тот же ИМХО. Описывается синхронный элемент, работающий по фронту CLK. В принципе синтезируемая схема зависит от выбраного синтезатора. А вообще советую Вам ознакомиться с готовыми синтезируемыми конструкиями VHDL. Найти их можно в описании синтезаторов (например, в описании синтезатора XST фирмы XILINX есть), потом в ISE есть синтезируемые шаблоны, в книге П.Н.Бибило "Синтез логических схем с использованием языка VHDL" тоже было ну и в др.
Go to the top of the page
 
+Quote Post
asya
сообщение May 16 2005, 02:04
Сообщение #16


Участник
*

Группа: Свой
Сообщений: 43
Регистрация: 4-02-05
Пользователь №: 2 412



Цитата(anatol1983 @ May 16 2005, 03:57)
Точки с запятой там не должно быть - это опечатка, но не надо строго придераться к автору (я встречал в книги в которых были ТАКИЕ опечатки, что просто жуть), к тому же на орфографические ошибки всегда укажет моделятор или синтезатор  smile.gif Два process'а здесь надо расматривать как два самостоятельных описания, что касается сигнала ena, включай его в список или не включай результат будет один и тот же ИМХО. Описывается синхронный элемент, работающий по фронту CLK. В принципе синтезируемая схема зависит от выбраного синтезатора. А вообще советую Вам ознакомиться с готовыми синтезируемыми конструкиями VHDL. Найти их можно в описании синтезаторов (например, в описании синтезатора XST фирмы XILINX есть), потом в ISE есть синтезируемые шаблоны, в книге П.Н.Бибило "Синтез логических схем с использованием языка VHDL" тоже было ну и в др.
*

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

Сообщений в этой теме
- asya   Вопрос новичка по VHDL   May 11 2005, 01:06
- - des00   Цитата(asya @ May 10 2005, 20:06)Вот такой во...   May 11 2005, 04:20
- - Pechkin   На все вопросы не отвечу, а отвечу только на : Цит...   May 11 2005, 12:20
- - andrew_b   Цитата(asya @ May 11 2005, 15:17)сразу синтез...   May 11 2005, 13:05
|- - makc   Цитата(andrew_b @ May 11 2005, 16:05)Цитата(a...   May 11 2005, 13:18
- - des00   Цитата(asya @ May 12 2005, 20:36)вот так все ...   May 16 2005, 03:17
- - andrew_b   Цитата(des00 @ May 16 2005, 07:17)Я имел в ви...   May 16 2005, 05:25
- - des00   Цитата(andrew_b @ May 16 2005, 00:25)Цитата(d...   May 16 2005, 06:19


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

 


RSS Текстовая версия Сейчас: 23rd August 2025 - 16:44
Рейтинг@Mail.ru


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