Перейти к содержанию
    

Вопрос новичка по VHDL

Вот такой вот код написал чтобы проверить работу директивы (или как это еще назвать) 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.

ЗЫЖ ногами не пинайте если я тут глупости наговорил, я новичек еще. :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот такой вот код написал чтобы проверить работу директивы (или как это еще назвать) 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.

ЗЫЖ ногами не пинайте если я тут глупости наговорил, я новичек еще. :)

 

а смотришь чем ?? не забыл что это не синтезируемая констукция ? :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

вообще у меня стоит multisim для моделирования. но я им не пользуюсь. сразу синтезирую и заливаю в fpga. и там уже на практике смотрю, что получилось...

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

опять же. может глупость сказал. :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На все вопросы не отвечу, а отвечу только на :

зачем вообще нужны несинтезируемые фичи типа этой? где и зачем оно используется?

 

Изначально языки Verilog, VHDL и тому подобные предназначались ТОЛЬКО для описания поведения схем, а не для синтеза. Потом языки были стандартизованы... и только потом появились средства логического синтеза. А использовать можно для создания поведенческих описаний и для создания тестбенчей.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

сразу синтезирую и заливаю в fpga. и там уже на практике смотрю, что получилось...

Ну это до поры до времени, пока проекты несерьезные. А так без функционального моделирования не обойтись.

 

про несинтезируемость понятно. очередная несинтезирпуемая фигня.

Это не фигня. Это фича. Про нее уже сказали.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

сразу синтезирую и заливаю в fpga. и там уже на практике смотрю, что получилось...

Ну это до поры до времени, пока проекты несерьезные. А так без функционального моделирования не обойтись.

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

опять же. может глупость сказал. :)

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

 

в архитектурном теле тестбенча описывается сигнал 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 в том числе и о тестбенчах

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

насчет клока - понятно. спасибо.

насчет линки - огромное спасибо. уже читаю. :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

прочитал про процессы. т.е. process.

я правильно понял? т.е. если в теле архитектуры несколько процессов - то все процессы выполняются параллельно. а внутри каждого процесса все идет последовательно?

и еще, можно ли написать процесс в процессе?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

прочитал про процессы. т.е. process.

я правильно понял? т.е. если в теле архитектуры несколько процессов - то все процессы выполняются параллельно. а внутри каждого процесса все идет последовательно?

и еще, можно ли написать процесс в процессе?

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

В зависимости от списка чуствительности и от логигки в процесее можно описать либо асинхронный либо синхронный блок.

ИМХО так.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

В зависимости от списка чуствительности и от логигки в процесее можно описать либо асинхронный либо синхронный блок.

ИМХО так.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

В зависимости от списка чуствительности и от логигки в процесее можно описать либо асинхронный либо синхронный блок.

ИМХО так.

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

 

Ну что тут не понятного? 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;

оба этих описания приведут к синтезу элемента "логическое И" с двумя входами

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...