Вісім каналів імпульсу покоління з використанням шина даних і адрес

A

anee_anil

Guest
Привіт всім,

16 бітна шина даних із зовнішніх джерел дає PRT, PW, час повторення і затримки.
Адреса автобус вказує 6 розрядне значення, яке містить адресу PRT, PW і Повторення і
затримки.
коли дозволять високої CPLD почне читання даних на основі адреси і зберігає його в
змінної.Якщо дозволити мала і почати висока, то дані із змінних взяв і
на основі даних, сигналу.
Вихід 8 сигнали повинні одночасно працювати на різних входів даного
ГВП: Повторення час імпульсу
PW: Тривалість імпульсу

Ось мій код, що дає ГВП і PW.як реалізувати повторення і затримки в той самий код.бібліотека IEEE;
IEEE.STD_LOGIC_1164.ALL використання;
IEEE.STD_LOGIC_ARITH.ALL використання;
IEEE.STD_LOGIC_UNSIGNED.ALL використання;
- Використання work.my_package.all;

---- Розкоментуйте наступну заяву бібліотеки, якщо екземпляр
---- Будь-який 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;
RU: у 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, REP, DELAY: std_logic_vector (15 downto 0);
сигнал count1, соіп!: 2: std_logic_vector (15 downto 0): = "0000000000000000";
Темп сигналу: std_logic_vector (15 downto 0);
Тип vector_array є масив (від 0 до 3) в
std_logic_vector (15 downto 0);
Сигнал пам'яті: vector_array; - momory 0 до 3 з 16 біт кожен
починати
процес (CLK, е ")
змінної temp3: ціле число від 0 до 32;
змінної temp4: ціле число від 0 до 100;
починати
temp3: = 0;
якщо е "= '1 ', то
якщо clk'event і CLK = '1 ', то
пам'яті (ел) <= data_bus; - розподіл вхідних даних в пам'яті
кінець, якщо;
я за цикл addr_bus'range в - адреса автобус
якщо (addr_bus (я) = '1 '), потім - std_logic_vector
temp3: = 2 * temp3 1; - для
решта - ціле число
temp3: = 2 * temp3; - перетворення
кінець, якщо; -
Кінець циклу;
ел <= temp3;
кінець, якщо;

- Я в REP'range петля - Повторення
- Якщо (REP (я) = '1 '), потім - std_logic_vector
- Temp4: = 2 * temp4 1; - для
- Інше - ціле число
- Temp4: = 2 * temp4; - перетворення
- Кінець, якщо; -
- Кінець циклу;
- Rep_int <= temp4;

ГВП <= пам'яті (0);
PW <= пам'яті (1);
REP <= пам'яті (2);
DELAY <= пам'яті (3);
закінчення процесу;

процес (CLK, єп, початок)

Мінлива temp1, temp2: std_logic_vector (15 downto 0);
починати
- Якщо (початок = 1 "і" е "= '0 '), то
якщо (clk'event і CLK = '1 '), то

temp2: = РГ;
clkout1 <= '1 ';
count1 <= count1 1;
якщо (затримка = count1), то

кінець, якщо;
якщо (= temp2 count1), то
count1 <= "0000000000000000";
кінець, якщо;
якщо (count1 <= PW), то
temp1: = PW;
clkout2 <= '1 ';
соіп!: 2 <= соіп!: 2 1;
якщо (temp1 = соіп!: 2), то
соіп!: 2 <= "0000000000000000";
clkout2 <= '0 ';
кінець, якщо;
ще
clkout2 <= '0 ';
кінець, якщо;
кінець, якщо;
- Кінець, якщо;
data_out0 <= clkout1 і clkout2;

закінчення процесу;
Поведінкові кінця;

Спасибо заранее.Сподіваємося на позитивну відповідь

 

Welcome to EDABoard.com

Sponsor

Back
Top