N
nanisan
Guest
Salut
Je suis en train de coder une interface entre un bus processeur et FPGA via un CPLD.Le transfert de données se fait via un bus bidirectionnel dans lequel les données et les adresses sont mutiplexed.Le processeur écrit un mot de 8 bits de données CPLD registre lorsque l'entrée est activée et un état des signaux 3bit sont renvoyés vers le processeur quand la sortie est active permettent.
Quand je synthétiser le code cependant je reçois un tas de mises en garde sur FF Latch / rognage.Quelqu'un peut me dire ce que je fais mal?Merci!Code:fpga_test entité estport (- Les signaux externes de la LBCLALE: en std_logic;
LCS1n: en std_logic;
LWEn: en std_logic;
Loen: en std_logic;
LCLK: en std_logic;
DAL: std_logic_vector inout (7 downto 0);
LA: en std_logic_vector (4 downto 0);
HRESETn: en std_logic;- CPLD signaux programme du registreFPGA1_CSn: std_logic hors;
FPGA2_CSn: std_logic hors;
FPGA3_CSn: std_logic hors;
FPGA_WRITEn: std_logic hors;
FPGA_PROGRAMn: std_logic hors;
FPGA_DATA: std_logic_vector à (7 downto 0);
FPGA_CCLK: std_logic hors;- Signaux CPLD registre d'entrée
FPGA_BUSY: en std_logic;
FPGA_DONE: en std_logic;
FPGA_INITn: en std_logic);fpga_test fin;COMPORTEMENT fpga_test architecture des SI- Définir les adresses registre (3 au total)
ROGRAM_ADDR constante: std_logic_vector (12 downto 0): = "0000000000000";
DATA_ADDR constante: std_logic_vector (12 downto 0): = "0000000000001";
INPUT_ADDR constante: std_logic_vector (12 downto 0): = "0000000000010";- Inscrivez-signaux -program_reg signal: std_logic_vector (4 downto 0);
data_reg signal: std_logic_vector (7 downto 0);
input_reg signal: std_logic_vector (2 downto 0);
outbuff_en signal: std_logic;
inbuff_en signal: std_logic;
reg_address signal: std_logic_vector (12 downto 0);commencer<= Outbuff_en pas Loen et non LCS1n;
<= Inbuff_en pas LWEn et non LCS1n;
reg_address <= DAL et LA;
<= FPGA_CCLK LCLK;processus (HRESETn, LCLK)
commencerif (HRESETn = '0 '), puis
<Program_reg = (autres => '0 ');
DAL <= (autres => '0 ');
<Data_reg = (autres => '0 ');
elsif (LCLK'event et LCLK = '1 ') puisif (inbuff_en = '1 'et Lale = '0' et reg_address = PROGRAM_ADDR) puis
program_reg (4 downto 0) <= DAL (4 downto 0);elsif (inbuff_en = '1 'et Lale = '0' et reg_address = DATA_ADDR) puis
data_reg (7 downto 0) <= DAL (7 downto 0);elsif (outbuff_en = '1 'et Lale = '0' et reg_address = INPUT_ADDR) puisDAL <= («00000» et input_reg);fin si;
fin si;processus de bout;processus (LCLK, HRESETn) - Entrée et données du registre
commencerif (HRESETn = '0 '), puis
<Input_reg = (autres => '0 ');FPGA_DATA <= (autres => '0 ');
elsif (LCLK'event et LCLK = '1 ') puis
program_reg cas (2 downto 0) est
lorsque "011" | "101" | "110" =>
input_reg <= FPGA_BUSY & FPGA_DONE & FPGA_INITn;
FPGA_DATA (7 downto 0) <= data_reg;
quand les autres => null;
Fin de cas;
fin si;
processus de bout;processus (HRESETn, program_reg) - Programme de Registre
commencerif (HRESETn = '0 '), puis
FPGA_WRITEn <= '1 ';
FPGA_PROGRAMn <= '1 ';
FPGA1_CSn <= '1 ';
FPGA2_CSn <= '1 ';
FPGA3_CSn <= '1 ';
d'autre
FPGA_WRITEn <program_reg = (4);
FPGA_PROGRAMn <program_reg = (3);
FPGA1_CSn <program_reg = (2);
FPGA2_CSn <program_reg = (1);
FPGA3_CSn <program_reg = (0);
fin si;processus de bout;COMPORTEMENT fin;
Je suis en train de coder une interface entre un bus processeur et FPGA via un CPLD.Le transfert de données se fait via un bus bidirectionnel dans lequel les données et les adresses sont mutiplexed.Le processeur écrit un mot de 8 bits de données CPLD registre lorsque l'entrée est activée et un état des signaux 3bit sont renvoyés vers le processeur quand la sortie est active permettent.
Quand je synthétiser le code cependant je reçois un tas de mises en garde sur FF Latch / rognage.Quelqu'un peut me dire ce que je fais mal?Merci!Code:fpga_test entité estport (- Les signaux externes de la LBCLALE: en std_logic;
LCS1n: en std_logic;
LWEn: en std_logic;
Loen: en std_logic;
LCLK: en std_logic;
DAL: std_logic_vector inout (7 downto 0);
LA: en std_logic_vector (4 downto 0);
HRESETn: en std_logic;- CPLD signaux programme du registreFPGA1_CSn: std_logic hors;
FPGA2_CSn: std_logic hors;
FPGA3_CSn: std_logic hors;
FPGA_WRITEn: std_logic hors;
FPGA_PROGRAMn: std_logic hors;
FPGA_DATA: std_logic_vector à (7 downto 0);
FPGA_CCLK: std_logic hors;- Signaux CPLD registre d'entrée
FPGA_BUSY: en std_logic;
FPGA_DONE: en std_logic;
FPGA_INITn: en std_logic);fpga_test fin;COMPORTEMENT fpga_test architecture des SI- Définir les adresses registre (3 au total)
DATA_ADDR constante: std_logic_vector (12 downto 0): = "0000000000001";
INPUT_ADDR constante: std_logic_vector (12 downto 0): = "0000000000010";- Inscrivez-signaux -program_reg signal: std_logic_vector (4 downto 0);
data_reg signal: std_logic_vector (7 downto 0);
input_reg signal: std_logic_vector (2 downto 0);
outbuff_en signal: std_logic;
inbuff_en signal: std_logic;
reg_address signal: std_logic_vector (12 downto 0);commencer<= Outbuff_en pas Loen et non LCS1n;
<= Inbuff_en pas LWEn et non LCS1n;
reg_address <= DAL et LA;
<= FPGA_CCLK LCLK;processus (HRESETn, LCLK)
commencerif (HRESETn = '0 '), puis
<Program_reg = (autres => '0 ');
DAL <= (autres => '0 ');
<Data_reg = (autres => '0 ');
elsif (LCLK'event et LCLK = '1 ') puisif (inbuff_en = '1 'et Lale = '0' et reg_address = PROGRAM_ADDR) puis
program_reg (4 downto 0) <= DAL (4 downto 0);elsif (inbuff_en = '1 'et Lale = '0' et reg_address = DATA_ADDR) puis
data_reg (7 downto 0) <= DAL (7 downto 0);elsif (outbuff_en = '1 'et Lale = '0' et reg_address = INPUT_ADDR) puisDAL <= («00000» et input_reg);fin si;
fin si;processus de bout;processus (LCLK, HRESETn) - Entrée et données du registre
commencerif (HRESETn = '0 '), puis
<Input_reg = (autres => '0 ');FPGA_DATA <= (autres => '0 ');
elsif (LCLK'event et LCLK = '1 ') puis
program_reg cas (2 downto 0) est
lorsque "011" | "101" | "110" =>
input_reg <= FPGA_BUSY & FPGA_DONE & FPGA_INITn;
FPGA_DATA (7 downto 0) <= data_reg;
quand les autres => null;
Fin de cas;
fin si;
processus de bout;processus (HRESETn, program_reg) - Programme de Registre
commencerif (HRESETn = '0 '), puis
FPGA_WRITEn <= '1 ';
FPGA_PROGRAMn <= '1 ';
FPGA1_CSn <= '1 ';
FPGA2_CSn <= '1 ';
FPGA3_CSn <= '1 ';
d'autre
FPGA_WRITEn <program_reg = (4);
FPGA_PROGRAMn <program_reg = (3);
FPGA1_CSn <program_reg = (2);
FPGA2_CSn <program_reg = (1);
FPGA3_CSn <program_reg = (0);
fin si;processus de bout;COMPORTEMENT fin;