Осем поколение канал импулс с помощта на данни и адрес автобус

A

anee_anil

Guest
Здравейте всички,

16-битови данни автобус от външен източник дава PRT, PW, Повторение време и забавяне.
Адрес автобус определя 6-малко стойност, която държи на адреса на PRT, PW Повторение и
забавям.
, когато се даде възможност на високо CPLD ще започне четенето на данни въз основа на адресите и го съхранява в
променлива.Когато се даде възможност на проекта е ниска и е висок след това данните от променливи се извличат и
въз основа на данните, сигналът се генерира.
Продукцията на осем сигнали трябва едновременно да работят за различните материали, дадени
PRT: Pulse Повторение Час
П.У.: импулса

Тук ми е код, който дава PRT и PW.как да се прилагат повторение и забавяне в същия код.IEEE библиотека;
употреба ieee.std_logic_1164.all;
IEEE.STD_LOGIC_ARITH.ALL употреба;
IEEE.STD_LOGIC_UNSIGNED.ALL употреба;
- използване work.my_package.all;

---- Uncomment следната декларация, библиотека, ако инстанциира
---- Всяко Xilinx примитиви в този кодекс.
- библиотека UNISIM;
- използване UNISIM.VComponents.all;

лице е pulse_rep
порт (data_bus: в std_logic_vector (15 downto 0);
addr_bus: в std_logic_vector (5 downto 0);
CLK: в std_logic;
EN: в std_logic;
: във std_logic;
data_out0, data_out1, data_out2, data_out3, data_out4, data_out5, data_out6, data_out7: Няма std_logic);
края pulse_rep;

архитектура поведението на pulse_rep е
аййг сигнал: цяло число от 0 до 32, - адрес в цели числа
сигнал rep_int: цяло число от 0 до 100; - Повторение в цели числа
clkout1 сигнал, clkout2: std_logic;
PRT сигнал, PW, Тел, Забавяне: std_logic_vector (15 downto 0);
count1 сигнал, count2: std_logic_vector (15 downto 0): = "0000000000000000";
сигнал Temp: std_logic_vector (15 downto 0);
vector_array е тип масив (от 0 до 3) на
std_logic_vector (15 downto 0);
сигнал памет: vector_array; - momory 0 до 3 на всеки 16-битов
започвам
процес (CLK, EN)
променлива temp3: цяло число от 0 до 32;
променлива temp4: цяло число от 0 до 100;
започвам
temp3: = 0;
ако EN = '1 'после
ако clk'event и CLK = '1 'после
памет (аййг) <= data_bus, - разпределяне на постъпващите данни на паметта
крайна сметка, ако;
Защото в addr_bus'range линия - адрес на автобус
IF (addr_bus (I) = '1 '), след това - std_logic_vector
temp3: = 2 * temp3 1; - да
друго - цяло число
temp3: = 2 * temp3; - конверсия
крайна сметка, ако; --
края линия;
аййг <= temp3;
крайна сметка, ако;

- Защото в REP'range линия - Повторение на
- ако (Тел (I) = '1 '), след това - std_logic_vector
- temp4: = 2 * temp4 1; - да
- друго - цяло число
- temp4: = 2 * temp4; - конверсия
- крайна сметка, ако; --
- края линия;
- rep_int <= temp4;

PRT <= памет (0);
П.У. <= памет (1);
Тел <= памет (2);
ЗАБАВЯНЕ <= памет (3);
край процес;

процес (CLK, EN, Start)

променлива temp1, temp2: std_logic_vector (15 downto 0);
започвам
- ако (Start = '1 'и EN = '0'), тогава
IF (clk'event и CLK = '1 '), тогава

temp2: = порт;
clkout1 <= '1 ';
count1 <= count1 1;
ако (закъснение = count1), тогава

крайна сметка, ако;
IF (temp2 = count1), тогава
count1 <= "0000000000000000";
крайна сметка, ако;
IF (count1 <= PW), тогава
temp1: = PW;
clkout2 <= '1 ';
count2 <= count2 1;
IF (temp1 = count2), тогава
count2 <= "0000000000000000";
clkout2 <= '0 ';
крайна сметка, ако;
в противен случай
clkout2 <= '0 ';
крайна сметка, ако;
крайна сметка, ако;
- крайна сметка, ако;
data_out0 <= clkout1 и clkout2;

край процес;
края поведението;

Благодаря предварително.Надявайки се на положителен отговор

 

Welcome to EDABoard.com

Sponsor

Back
Top