Добавление источников VHDL




В этой работе не будут создаваться новые файлы. Нужно добавить уже готовые VHDL файлы этот проект.

Для этого нужно кликнуть правой кнопкой в свободной области «Hierarchy» и выбрать «Add Source» (Рис. 1.5.).

 

Рис. 1.5. Добавление готовых файлов-источников

 

И добавить следующие файлы: BP.vhd, Test.vhd, и toblerone.vhd.

В появившемся окне (Рис. 1.6)убедиться, что нет ошибок и нажать «OK».

Рис. 1.6. Окно мастера импорта файлов в проект

 

После импорта в окне иерархии появится уже готовая к созданию конфигурационного файла иерархия (Рис. 1.7.).

Рис. 1.7. Иерархия проекта

Файл toblerone.vhd содержит описание работы алгоритма ”бабочка”.

 

Код «бабочки»

entity Bbch is

Port (x0re: in STD_LOGIC_VECTOR(17 downto 0);

x0im: in STD_LOGIC_VECTOR(17 downto 0);

x1re: in STD_LOGIC_VECTOR(17 downto 0);

x1im: in STD_LOGIC_VECTOR(17 downto 0);

wre: in STD_LOGIC_VECTOR(15 downto 0);

wim: in STD_LOGIC_VECTOR(15 downto 0);

y0re: out STD_LOGIC_VECTOR(17 downto 0);

y0im: out STD_LOGIC_VECTOR(17 downto 0);

y1re: out STD_LOGIC_VECTOR(17 downto 0);

y1im: out STD_LOGIC_VECTOR(17 downto 0));

end Bbch;

 

Понятие entity определяется как «интерфейс объекта проекта». Данные строки содержат описание интерфейса компонента «бабочка». Список портов, начинающийся с ключевого слова port, определяет имя, направление (режим – mode) и тип каждого порта. Тип порта – это тип сигнала, ассоциированного с данным портом. Направление порта может быть: in – входной порт, out – выходной, inout – двунаправленный.

Для описания многоразрядных сигналов необходимо использовать тип std_logic_vector (<старший разряд> downto <младший разряд>).

Таким образом в компоненте «бабочка» мы имеем 4 входных восемнадцатиразрядных порта под именами x0re, x0im, x1im, x1re (re-реальная часть, im-мнимая), 2 входных шеснадцатиразрядных(поворачивающие множители) wre и wim, 4 выходных порта y0re, y0im, y1re, y1im.

 

 

architecture arch of Bbch is

 

signal w0,w1,w2,w3: STD_LOGIC_VECTOR (33 downto 0);

 

begin

w0<=(x0re-x1re)*wre;

w1<=(x0im-x1im)*wim;

w2<=(x0re-x1re)*wim;

w3<=(x0im-x1im)*wre;

y1re<=w0(33 downto 16) - w2(33 downto 16);

y1im<=w1(33 downto 16) + w3(33 downto 16);

y0re<=x0re+x1re;

y0im<=x0im+x1im;

end arch;

Архитектура – это структура системы на функциональном уровне ее описания. В архитектурном теле описываются функции (поведение) либо структура объекта проекта.

Общий вид конструкции, употребляемой при декларации сигналов одного типа

Signal список сигналов: тип;

Во второй строке мы видим объявление сигналов w0, w1, w2, w3 имеющие 34 разряда. (?????описать что такое w и округление, почему 34 разряда.)

После ключевого слова begin начинается вычисление по алгоритму «бабочка»

 

 

Файл BP.vhd содержит описание работы алгоритма основного модуля

Код основного модуля

 

 

entity BP is

port (clk: in std_logic;

rst: in std_logic;

ce: in std_logic;

xire: in STD_LOGIC_VECTOR(17 downto 0);

xiim: in STD_LOGIC_VECTOR(17 downto 0);

xore: out STD_LOGIC_VECTOR(17 downto 0);

xoim: out STD_LOGIC_VECTOR(17 downto 0));

end BP;

 

Код основного модуля кроме входных и выходных портов содержит еще 3 порта типа std_logic:

- вход тактового сигнала clk

- сброс (reset) rst

- разрешающий сигнал се

 

Пример декларации типа «массив»:

type имя is array (0 to/downto 7) of тип;

В нашем случае объявление массивов выглядит так

 

type memory_ta is array (0 to 7) of std_logic_vector(17 downto 0);

signal are,aim: memory_ta;

type memory_tb is array (0 to 3) of std_logic_vector(15 downto 0);

signal bre,bim: memory_tb

 

Ниже рассмотрим реализацию логики устройства

 

process(clk)

begin

if clk' event and clk = '1' then

if (rst = '1') then

For i in 0 to 7 loop

are(i) <= (others => '0');

aim(i) <= (others => '0');

end loop;

cnt <= (others => '0');

cont<= (others => '0');

 

В языке VHDL имеются преопределенные и определенные пользователем атрибуты. Для построения моделей и моделирования важную роль играют атрибуты сигналов. Например, предопределенный атрибут event ассоциируется с каким-либо сигналом (например, с сигналом clk). Он записывается clk' event.

Итак, в выделенных строках кода говорится о том, что если тактовый сигнал меняет свое значение на '1'и если rst = '1', то в этом случае запускается последовательный оператор цикла (loop), и присваивает всем элементам массива значение '0'. После завершения цикла это же значение принимают счетчик сигналов и тактов.

else

if CE = '1' then

cont_bitrev(0) <= cont(2);

cont_bitrev(1) <= cont(1);

cont_bitrev(2) <= cont(0);

 

if ld1 = '0' then

are (IEEE.std_logic_unsigned.CONV_INTEGER(cont))<= xire; aim (IEEE.std_logic_unsigned.CONV_INTEGER(cont))<= xiim;

if (IEEE.std_logic_unsigned.CONV_INTEGER(cont) = 7) then cnt <= (others => '0');

ld1<='1';

end if;

Иначе, если тактовый сигнал меняет свое значение на '1' и разрешающий вход равен '1' тогда сигналы с входных портов записываются в массив. Как только было записано 8 значений, загрузка завершена и счетчик тактов обнуляется.

Следующим шагом будет потактовая подача сигналов на входы «бабочки». Ниже представлены первые 2 такта, последующие выполняются аналогично.

 

if IEEE.std_logic_unsigned.CONV_INTEGER(cnt) = 0 then x0re <= are(0);

x0im <= aim(0);

x1re <= are(4);

x1im <= aim(4);

wre <= bre(0);

wim <= bim(0);

 

----------------------------------------------------------

elsif IEEE.std_logic_unsigned.CONV_INTEGER(cnt) = 1 then

are(0)<= y0re;

aim(0)<= y0im;

are(4)<= y1re;

aim(4)<= y1im;

x0re <= are(1);

x0im <= aim(1);

x1re <= are(5);

x1im <= aim(5);

wre <= bre(1);

wim <= bim(1);

 

После завершения вычислений выполняется вывод отчетов ДПФ в бит инверсной перестановке. Как только выведены 8 значений сбрасывается счетчик тактов и разрешается загрузка новых данных. Этот процесс описывается следующими строками:

 

if ov = '1' then

xore <= are(IEEE.std_logic_unsigned.CONV_INTEGER(cont_bitrev));

xoim <= aim(IEEE.std_logic_unsigned.CONV_INTEGER(cont_bitrev))

cont_bitrev <= cont_bitrev+1;

if (IEEE.std_logic_unsigned.CONV_INTEGER(cont_bitrev) = 7) then

cnt <= (others => '0');

ld1 <= '0';

ov <= '0';

end if;

end if;

 

Файл Test.vhd.

 

Этот файл уже содержит данные о входных сигналах и потребуется нам для моделирования проекта.

Моделирование является важным этапом в процессе разработки цифрового устройства. Этот этап ускоряет процесс отладки, так как гораздо быстрее запускать моделирование после каждого изменения, а не заново создавать конфигурационный файл и загружать его в отладочную плату. К тому же только в режиме моделирования можно увидеть состояния каждой переменной в нужные участки времени, что, соответственно, помогает обнаружить ошибку. Чтобы запустить этот процесс для текущего проекта, нужно выбрать вкладку Simulation(Рис. 1.8)

 

Рис. 1.8. Вкладка симуляция

 

Дальше нужно выбрать файл, который будет симулироваться. Можно выбрать как отдельный модуль VHDL и посмотреть его работу, так и весь проект в целом. Запустим симуляцию, выбрав файл Test.vhd. и запустив процесс Simulate Behavioral Model (Рис. 1.9)

Рис. 1.9. Запуск процесса симуляции

 

 

После успешного завершения процесса откроется симулятор iSim, главное окно которого представлено на рисунке 1.10.

 

Рис 1.10. Симуляция проекта

 

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

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

Рассмотрим подробнее полученную диаграмму и убедимся в правильной работе устройства.

На Рис.1.11 происходит загрузка данных.

 

Рис.1.11. Загрузка данных

 

На данном экране симуляции можно увидеть подачу входных данных (4 строка сверху), загрузка данных в ячейки памяти происходит только после того как флаг «CE » взводится в «1 », а «RESET » взводится в «0 ». Так же на диаграмме видно соблюдение условия

if clk' event and clk = '1' then. (105ns)

На Рис. 1.12 происходит вывод результатов вычислений. На данном этапе заканчивается расчет «бабочек» и данные последовательно подаются на выходной порт. (315ns)

 

Рис. 1.12. Вывод результатов вычислений.

ПРИЛОЖЕНИЕ

Код программы

Код «бабочки»

 

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.NUMERIC_STD;

use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

-- Uncomment the following library declaration if using

-- arithmetic functions with Signed or Unsigned values

--use IEEE.NUMERIC_STD.ALL;

-- Uncomment the following library declaration if instantiating

-- any Xilinx primitives in this code.

--library UNISIM;

--use UNISIM.VComponents.all;

entity Bbch is

Port (x0re: in STD_LOGIC_VECTOR(17 downto 0);

x0im: in STD_LOGIC_VECTOR(17 downto 0);

x1re: in STD_LOGIC_VECTOR(17 downto 0);

x1im: in STD_LOGIC_VECTOR(17 downto 0);

wre: in STD_LOGIC_VECTOR(15 downto 0);

wim: in STD_LOGIC_VECTOR(15 downto 0);

y0re: out STD_LOGIC_VECTOR(17 downto 0);

y0im: out STD_LOGIC_VECTOR(17 downto 0);

y1re: out STD_LOGIC_VECTOR(17 downto 0);

y1im: out STD_LOGIC_VECTOR(17 downto 0));

end Bbch;

 

 

Код основного модуля

 

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.NUMERIC_STD;

use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

 

-- Uncomment the following library declaration if using

-- arithmetic functions with Signed or Unsigned values

--use IEEE.NUMERIC_STD.ALL;

 

-- Uncomment the following library declaration if instantiating

-- any Xilinx primitives in this code.

--library UNISIM;

--use UNISIM.VComponents.all;

 

entity BP is

port (clk: in std_logic;

rst: in std_logic;

ce: in std_logic;

xire: in STD_LOGIC_VECTOR(17 downto 0);

xiim: in STD_LOGIC_VECTOR(17 downto 0);

xore: out STD_LOGIC_VECTOR(17 downto 0);

xoim: out STD_LOGIC_VECTOR(17 downto 0));

end BP;

 

architecture arch2 of BP is

 

component Bbch is

Port (x0re: in STD_LOGIC_VECTOR(17 downto 0);

x0im: in STD_LOGIC_VECTOR(17 downto 0);

x1re: in STD_LOGIC_VECTOR(17 downto 0);

x1im: in STD_LOGIC_VECTOR(17 downto 0);

wre: in STD_LOGIC_VECTOR(15 downto 0);

wim: in STD_LOGIC_VECTOR(15 downto 0);

y0re: out STD_LOGIC_VECTOR(17 downto 0);

y0im: out STD_LOGIC_VECTOR(17 downto 0);

y1re: out STD_LOGIC_VECTOR(17 downto 0);

y1im: out STD_LOGIC_VECTOR(17 downto 0));

end component;

 

 

signal x0re: std_logic_vector(17 downto 0):= (others => '0');

signal x0im: std_logic_vector(17 downto 0):= (others => '0');

signal x1re: std_logic_vector(17 downto 0):= (others => '0');

signal x1im: std_logic_vector(17 downto 0):= (others => '0');

signal wre: std_logic_vector(15 downto 0):= (others => '0');

signal wim: std_logic_vector(15 downto 0):= (others => '0');

signal y0re: std_logic_vector(17 downto 0);

signal y0im: std_logic_vector(17 downto 0);

signal y1re: std_logic_vector(17 downto 0);

signal y1im: std_logic_vector(17 downto 0);

 

 

type memory_ta is array (0 to 7) of std_logic_vector(17 downto 0);

signal are,aim: memory_ta;

type memory_tb is array (0 to 3) of std_logic_vector(15 downto 0);

 

signal bre,bim: memory_tb;

signal cnt: std_logic_vector (4 downto 0); --счетчик тактов

signal cont: std_logic_vector (2 downto 0); -- счетчик сигналов

signal cont_bitrev:std_logic_vector (2 downto 0); --бит-реверсия

signal ld1: std_logic:= '0'; --флаг загрузки данных

signal ov: std_logic; --флаг окончания вычислений

 

begin --поворачивающие множители в целочисленной арифметике (, )

bre(0) <= CONV_STD_LOGIC_VECTOR(32767, 16);

bim(0) <= CONV_STD_LOGIC_VECTOR(0, 16);

bre(1) <= CONV_STD_LOGIC_VECTOR(23169, 16);

bim(1) <= CONV_STD_LOGIC_VECTOR(-23169, 16);

 

bre(2) <= CONV_STD_LOGIC_VECTOR(0, 16);

bim(2) <= CONV_STD_LOGIC_VECTOR(-32767, 16);

bre(3) <= CONV_STD_LOGIC_VECTOR(-23169, 16);

bim(3) <= CONV_STD_LOGIC_VECTOR(-23169, 16);

 

sv1: bbch port map (

x0re=>x0re,

x0im=>x0im,

x1re=>x1re,

x1im=>x1im,

wre=>wre,

wim=>wim,

y0re=>y0re,

y0im=>y0im,

y1re=>y1re,

y1im=>y1im); --связь портов бабочки и сигналов модуля BP

 

process(clk)

begin

if clk' event and clk = '1' then

if (rst = '1') then

for i in 0 to 7 loop

are(i) <= (others => '0');

aim(i) <= (others => '0');

end loop;

cnt <= (others => '0');

cont<= (others => '0');

else

if CE = '1' then

cont_bitrev(0) <= cont(2); --описание бит инверсной перестановки

cont_bitrev(1) <= cont(1);

cont_bitrev(2) <= cont(0);

 

if ld1 = '0' then

 

are (IEEE.std_logic_unsigned.CONV_INTEGER(cont))<= xire;

aim (IEEE.std_logic_unsigned.CONV_INTEGER(cont))<= xiim;

if (IEEE.std_logic_unsigned.CONV_INTEGER(cont) = 7) then

cnt <= (others => '0');

ld1<='1';

end if;

cont <= cont+1;

elsif ld1 = '1' then

if IEEE.std_logic_unsigned.CONV_INTEGER(cnt) = 0 then

x0re <= are(0);

x0im <= aim(0);

x1re <= are(4);

x1im <= aim(4);

wre <= bre(0);

wim <= bim(0);

 

----------------------------------------------------------

elsif IEEE.std_logic_unsigned.CONV_INTEGER(cnt) = 1 then

are(0)<= y0re;

aim(0)<= y0im;

are(4)<= y1re;

aim(4)<= y1im;

x0re <= are(1);

x0im <= aim(1);

x1re <= are(5);

x1im <= aim(5);

wre <= bre(1);

wim <= bim(1);

 

 

----------------------------------------------------------

elsif IEEE.std_logic_unsigned.CONV_INTEGER(cnt) = 2 then

are(1)<= y0re;

aim(1)<= y0im;

are(5)<= y1re;

aim(5)<= y1im;

x0re <= are(2);

x0im <= aim(2);

x1re <= are(6);

x1im <= aim(6);

wre <= bre(2);

wim <= bim(2);

 

----------------------------------------------------------

elsif IEEE.std_logic_unsigned.CONV_INTEGER(cnt) = 3 then

are(2)<= y0re;

aim(2)<= y0im;

are(6)<= y1re;

aim(6)<= y1im;

x0re <= are(3);

x0im <= aim(3);

x1re <= are(7);

x1im <= aim(7);

wre <= bre(3);

wim <= bim(3);

 

----------------------------------------------------------

-------------------------------------------второй этап БПФ

elsif IEEE.std_logic_unsigned.CONV_INTEGER(cnt) = 4 then

are(3)<= y0re;

aim(3)<= y0im;

are(7)<= y1re;

aim(7)<= y1im;

x0re <= are(0);

x0im <= aim(0);

x1re <= are(2);

x1im <= aim(2);

wre <= bre(0);

wim <= bim(0);

 

----------------------------------------------------------

elsif IEEE.std_logic_unsigned.CONV_INTEGER(cnt) = 5 then

are(0)<= y0re;

aim(0)<= y0im;

are(2)<= y1re;

aim(2)<= y1im;

x0re <= are(1);

x0im <= aim(1);

x1re <= are(3);

x1im <= aim(3);

wre <= bre(2);

wim <= bim(2);

 

----------------------------------------------------------

elsif IEEE.std_logic_unsigned.CONV_INTEGER(cnt) = 6 then

are(1)<= y0re;

aim(1)<= y0im;

are(3)<= y1re;

aim(3)<= y1im;

x0re <= are(4);

x0im <= aim(4);

x1re <= are(6);

x1im <= aim(6);

wre <= bre(0);

wim <= bim(0);

 

----------------------------------------------------------

elsif IEEE.std_logic_unsigned.CONV_INTEGER(cnt) = 7 then

are(4)<= y0re;

aim(4)<= y0im;

are(6)<= y1re;

aim(6)<= y1im;

x0re <= are(5);

x0im <= aim(5);

x1re <= are(7);

x1im <= aim(7);

wre <= bre(2);

wim <= bim(2);

 

----------------------------------------------------------

-------------------------------------------третий этап БПФ

elsif IEEE.std_logic_unsigned.CONV_INTEGER(cnt) = 8 then

are(5)<= y0re;

aim(5)<= y0im;

are(7)<= y1re;

aim(7)<= y1im;

x0re <= are(0);

x0im <= aim(0);

x1re <= are(1);

x1im <= aim(1);

wre <= bre(0);

wim <= bim(0);

 

----------------------------------------------------------

elsif IEEE.std_logic_unsigned.CONV_INTEGER(cnt) = 9 then

are(0)<= y0re;

aim(0)<= y0im;

are(1)<= y1re;

aim(1)<= y1im;

x0re <= are(2);

x0im <= aim(2);

x1re <= are(3);

x1im <= aim(3);

wre <= bre(0);

wim <= bim(0);

 

----------------------------------------------------------

elsif IEEE.std_logic_unsigned.CONV_INTEGER(cnt) = 10 then

are(2)<= y0re;

aim(2)<= y0im;

are(3)<= y1re;

aim(3)<= y1im;

x0re <= are(4);

x0im <= aim(4);

x1re <= are(5);

x1im <= aim(5);

wre <= bre(0);

wim <= bim(0);

 

----------------------------------------------------------

elsif IEEE.std_logic_unsigned.CONV_INTEGER(cnt) = 11 then

are(4)<= y0re;

aim(4)<= y0im;

are(5)<= y1re;

aim(5)<= y1im;

x0re <= are(6);

x0im <= aim(6);

x1re <= are(7);

x1im <= aim(7);

wre <= bre(0);

wim <= bim(0);

 

----------------------------------------------------------

elsif IEEE.std_logic_unsigned.CONV_INTEGER(cnt) = 12 then

are(6)<= y0re;

aim(6)<= y0im;

are(7)<= y1re;

aim(7)<= y1im;

----------------------------------------------------------

ov <='1'; --конец вычислений

cont_bitrev<="000";

end if;

cnt<=cnt+1;

end if;

end if;

if ov = '1' then

xore <= are(IEEE.std_logic_unsigned.CONV_INTEGER(cont_bitrev));

xoim <= aim(IEEE.std_logic_unsigned.CONV_INTEGER(cont_bitrev))

cont_bitrev <= cont_bitrev+1;

if (IEEE.std_logic_unsigned.CONV_INTEGER(cont_bitrev) = 7) then

cnt <= (others => '0');

ld1 <= '0';

ov <= '0';

end if;

end if;

end if;

end if;

end process;

end arch2;

Код тестбенча:

LIBRARY ieee;

USE ieee.std_logic_1164.ALL;

use IEEE.NUMERIC_STD;

use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

 

-- Uncomment the following library declaration if using

-- arithmetic functions with Signed or Unsigned values

--USE ieee.numeric_std.ALL;

 

ENTITY Test IS

END Test;

 

ARCHITECTURE behavior OF Test IS

 

-- Component Declaration for the Unit Under Test (UUT)

 

COMPONENT BP

PORT(

clk: IN std_logic;

rst: IN std_logic;

ce: IN std_logic;

xire: IN std_logic_vector(17 downto 0);

xiim: IN std_logic_vector(17 downto 0);

xore: OUT std_logic_vector(17 downto 0);

xoim: OUT std_logic_vector(17 downto 0)

);

END COMPONENT;

 

--Inputs

signal clk: std_logic:= '0';

signal rst: std_logic:= '0';

signal ce: std_logic:= '0';

signal xire: std_logic_vector(17 downto 0):= (others => '0');

signal xiim: std_logic_vector(17 downto 0):= (others => '0');

 

--Outputs

signal xore: std_logic_vector(17 downto 0);

signal xoim: std_logic_vector(17 downto 0);

signal cnt: std_logic_vector (3 downto 0);

-- Clock period definitions

constant clk_period: time:= 10 ns;

 

BEGIN

-- Instantiate the Unit Under Test (UUT)

uut: BP PORT MAP (

clk => clk,

rst => rst,

ce => ce,

xire => xire,

xiim => xiim,

xore => xore,

xoim => xoim

);

 

-- Clock process definitions

clk_process:process

begin

clk <= '0';

wait for clk_period/2;

clk <= '1';

wait for clk_period/2;

end process;

 

 

-- Stimulus process

 

stim_proc: process

begin

-- hold reset state for 100 ns.

 

rst <= '1';

 

ce <= '0';

wait for 100 ns;

 

rst <= '0';

ce <= '1';

 

wait for clk_period*10;

 

-- insert stimulus here

 

wait;

end process;

---процесс описания входного цифрового сигнала.

process(clk)

begin

if clk' event and clk = '1' then

if IEEE.std_logic_unsigned.CONV_INTEGER(cnt) = 0 then

xire <= "000000000000000000";

xiim <= "000000000000000000";

cnt<="0001";

elsif IEEE.std_logic_unsigned.CONV_INTEGER(cnt) = 1 then

xire <= CONV_STD_LOGIC_VECTOR(92681, 18);

xiim <= "000000000000000000";

cnt<="0010";

elsif IEEE.std_logic_unsigned.CONV_INTEGER(cnt) = 2 then

xire <= CONV_STD_LOGIC_VECTOR(131071, 18);

xiim <= "000000000000000000";

cnt<="0011";

elsif IEEE.std_logic_unsigned.CONV_INTEGER(cnt) = 3 then

 

xire <= CONV_STD_LOGIC_VECTOR(92681, 18);

xiim <= "000000000000000000";

cnt<="0100";

elsif IEEE.std_logic_unsigned.CONV_INTEGER(cnt) = 4 then

 

xire <= "000000000000000000";

xiim <= "000000000000000000";

cnt<="0101";

elsif IEEE.std_logic_unsigned.CONV_INTEGER(cnt) = 5 then

 

xire <= CONV_STD_LOGIC_VECTOR(-92681, 18);

xiim <= "000000000000000000";

cnt<="0110";

elsif IEEE.std_logic_unsigned.CONV_INTEGER(cnt) = 6 then

xire <= CONV_STD_LOGIC_VECTOR(-131071, 18);

xiim <= "000000000000000000";

cnt<="0111";

elsif IEEE.std_logic_unsigned.CONV_INTEGER(cnt) = 7 then

xire <= CONV_STD_LOGIC_VECTOR(-92681, 18);

xiim <= "000000000000000000";

cnt<="1000";

elsif IEEE.std_logic_unsigned.CONV_INTEGER(cnt) = 8 then

xire <= "000000000000000000";

xiim <= "000000000000000000";

cnt<="0000";

 

end if;

end if;

end process;

END;

 

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-08-08 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: