A
anee_anil
Guest
Salut à tous,
16 bits du bus de données à partir des sources externes donne l'EPR, PW, temps de répétition et de retard.
bus d'adresse spécifie le peu de valeur 6, qui contient l'adresse de l'EPR, PW et de redoublement et
retard.
Lorsque l'option Activer est élevé le CPLD va commencer la lecture des données basée sur les adresses et les stocke dans un
variable.Lorsque l'option Activer est faible et de départ est élevé, les données à partir des variables sont extraites et
sur la base de données, le signal est généré.
La sortie de huit signaux travaillent simultanément pour différents intrants donnée
EPR: Temps de répétition des impulsions
PW: largeur d'impulsion
Voici mon code qui donne l'EPR et Pw.comment mettre en uvre la répétition et les retards dans le même code.IEEE bibliothèque;
IEEE.STD_LOGIC_1164.ALL utilisation;
IEEE.STD_LOGIC_ARITH.ALL utilisation;
IEEE.STD_LOGIC_UNSIGNED.ALL utilisation;
work.my_package.all utilisation -;
---- Décommentez la déclaration suivante si la bibliothèque de l'instanciation
---- Tout primitives Xilinx dans ce code.
Bibliothèque - UNISIM;
UNISIM.VComponents.all utilisation -;
pulse_rep entité est
port (data_bus: en std_logic_vector (15 downto 0);
addr_bus: en std_logic_vector (5 downto 0);
CLK: en std_logic;
FR: En std_logic;
Début: dans std_logic;
data_out0, data_out1, data_out2, data_out3, data_out4, data_out5, data_out6, data_out7: std_logic out);
pulse_rep fin;
l'architecture du comportement des pulse_rep est
addr signal: gamme entier 0 à 32; - adresse en nombres entiers
rep_int signal: gamme entier 0 à 100; - Répétition en nombres entiers
signal clkout1, clkout2: std_logic;
signal PRT, PW, REP, DELAY: std_logic_vector (15 downto 0);
signal count1, count2: std_logic_vector (15 downto 0): = "0000000000000000";
temp signal: std_logic_vector (15 downto 0);
vector_array type array (0 à 3) de
std_logic_vector (15 downto 0);
la mémoire de signal: vector_array; - momory de 0 à 3 de 16 bits chacun
commencer
processus (CLK, fr)
temp3 variable: gamme entier 0 à 32;
temp4 variable: gamme entier 0 à 100;
commencer
temp3: = 0;
si en = '1 'alors
si clk'event et CLK = '1 'alors
mémoire (adr) <= data_bus; - l'attribution de données entrantes à la mémoire
fin si;
pour en boucle addr_bus'range i - bus d'adresse de
if (addr_bus (i) = '1 ') puis - std_logic_vector
temp3: = 2 * temp3 1, - à
Autres - entier
temp3: = 2 * temp3; - conversion
fin si; -
boucle de la fin;
<Addr = temp3;
fin si;
- À l'REP'range - boucle de répétition de i
- If (REP (i) = '1 ') puis - std_logic_vector
- Temp4: = 2 * temp4 1, - à
Autres - entier -
- Temp4: = 2 * temp4; - conversion
- Fin si; -
boucle de la fin -;
- <= Rep_int temp4;
PRT <= mémoire (0);
PW <= mémoire (1);
REP <= mémoire (2);
DELAY <= mémoire (3);
processus de bout;
processus (CLK, en, début)
variable temp1, temp2: std_logic_vector (15 downto 0);
commencer
- Si (start = '1 'et en = '0'), puis
if (clk'event et CLK = '1 ') puis
temp2: = EPR;
clkout1 <= '1 ';
count1 <= count1 1;
if (delay = count1) puis
fin si;
if (temp2 = count1) puis
count1 <= "0000000000000000";
fin si;
if (count1 <= pw) alors
temp1: = PW;
clkout2 <= '1 ';
count2 <= count2 1;
if (temp1 = count2) puis
count2 <= "0000000000000000";
clkout2 <= '0 ';
fin si;
d'autre
clkout2 <= '0 ';
fin si;
fin si;
- Fin si;
data_out0 <= clkout1 et clkout2;
processus de bout;
fin comportement;
Merci d'avance.Espérant une réponse positive
16 bits du bus de données à partir des sources externes donne l'EPR, PW, temps de répétition et de retard.
bus d'adresse spécifie le peu de valeur 6, qui contient l'adresse de l'EPR, PW et de redoublement et
retard.
Lorsque l'option Activer est élevé le CPLD va commencer la lecture des données basée sur les adresses et les stocke dans un
variable.Lorsque l'option Activer est faible et de départ est élevé, les données à partir des variables sont extraites et
sur la base de données, le signal est généré.
La sortie de huit signaux travaillent simultanément pour différents intrants donnée
EPR: Temps de répétition des impulsions
PW: largeur d'impulsion
Voici mon code qui donne l'EPR et Pw.comment mettre en uvre la répétition et les retards dans le même code.IEEE bibliothèque;
IEEE.STD_LOGIC_1164.ALL utilisation;
IEEE.STD_LOGIC_ARITH.ALL utilisation;
IEEE.STD_LOGIC_UNSIGNED.ALL utilisation;
work.my_package.all utilisation -;
---- Décommentez la déclaration suivante si la bibliothèque de l'instanciation
---- Tout primitives Xilinx dans ce code.
Bibliothèque - UNISIM;
UNISIM.VComponents.all utilisation -;
pulse_rep entité est
port (data_bus: en std_logic_vector (15 downto 0);
addr_bus: en std_logic_vector (5 downto 0);
CLK: en std_logic;
FR: En std_logic;
Début: dans std_logic;
data_out0, data_out1, data_out2, data_out3, data_out4, data_out5, data_out6, data_out7: std_logic out);
pulse_rep fin;
l'architecture du comportement des pulse_rep est
addr signal: gamme entier 0 à 32; - adresse en nombres entiers
rep_int signal: gamme entier 0 à 100; - Répétition en nombres entiers
signal clkout1, clkout2: std_logic;
signal PRT, PW, REP, DELAY: std_logic_vector (15 downto 0);
signal count1, count2: std_logic_vector (15 downto 0): = "0000000000000000";
temp signal: std_logic_vector (15 downto 0);
vector_array type array (0 à 3) de
std_logic_vector (15 downto 0);
la mémoire de signal: vector_array; - momory de 0 à 3 de 16 bits chacun
commencer
processus (CLK, fr)
temp3 variable: gamme entier 0 à 32;
temp4 variable: gamme entier 0 à 100;
commencer
temp3: = 0;
si en = '1 'alors
si clk'event et CLK = '1 'alors
mémoire (adr) <= data_bus; - l'attribution de données entrantes à la mémoire
fin si;
pour en boucle addr_bus'range i - bus d'adresse de
if (addr_bus (i) = '1 ') puis - std_logic_vector
temp3: = 2 * temp3 1, - à
Autres - entier
temp3: = 2 * temp3; - conversion
fin si; -
boucle de la fin;
<Addr = temp3;
fin si;
- À l'REP'range - boucle de répétition de i
- If (REP (i) = '1 ') puis - std_logic_vector
- Temp4: = 2 * temp4 1, - à
Autres - entier -
- Temp4: = 2 * temp4; - conversion
- Fin si; -
boucle de la fin -;
- <= Rep_int temp4;
PRT <= mémoire (0);
PW <= mémoire (1);
REP <= mémoire (2);
DELAY <= mémoire (3);
processus de bout;
processus (CLK, en, début)
variable temp1, temp2: std_logic_vector (15 downto 0);
commencer
- Si (start = '1 'et en = '0'), puis
if (clk'event et CLK = '1 ') puis
temp2: = EPR;
clkout1 <= '1 ';
count1 <= count1 1;
if (delay = count1) puis
fin si;
if (temp2 = count1) puis
count1 <= "0000000000000000";
fin si;
if (count1 <= pw) alors
temp1: = PW;
clkout2 <= '1 ';
count2 <= count2 1;
if (temp1 = count2) puis
count2 <= "0000000000000000";
clkout2 <= '0 ';
fin si;
d'autre
clkout2 <= '0 ';
fin si;
fin si;
- Fin si;
data_out0 <= clkout1 et clkout2;
processus de bout;
fin comportement;
Merci d'avance.Espérant une réponse positive