B
bibhuti_seoul
Guest
Přátelé,
Musím se konala v logice VHDL pro Interrupt v rozhraní cpu Microwire.Mám FPGA na interfce s CPU.
Dle manuálu, registr je stav aktualizován a srovnává s posledním status registru.pokud aktualizovaný stav registru není roven současný status registru, pak to generuje přerušení.a pak se CPU dostane výstup z FPGA.
Psal jsem kód, jako je tento
- Stav registru update
proces (mclk, load_status)
začítpokud mclk = '1 'a pak mclk'event
- Pokud power_up_activate = '1 'pak
pokud load_status = '1 'pak
dasl_status_update_reg <= dasl_status_reg;
elsif load_status = '0 'a power_up_activate = '1' pak
dasl_status_update_reg <= dasl_status_update_reg;
elsif power_up_activate = '0 ', pak
dasl_status_update_reg <= dasl_status_update_reg;
end if;
- Jinak dasl_status_update_reg <= (ostatní => '0 ');
- End if;
end if;
ukončení procesu;
- Přerušení generace -----------------
proces (mclk, rst_dasl)
začít
pokud rst_dasl = '0 ', pak
int <= '1 ';
elsif mclk = '1 'a pak mclk'event
- Pokud mclk = '1 'a pak mclk'event
- Pokud power_up_activate = '1 'pak
pokud load_status = '1 'pak
pokud dasl_status_update_reg / = dasl_status_reg pak - dasl_status_update_reg / = dasl_status_reg
int <= '0 ';
jinak - pokud dasl_status_update_reg / = dasl_status_reg THEN
int <= '1 ';
end if;
jiný int <= '1 ';
end if;
end if;
ukončení procesu;
- FPGA Výstup na CPU, sériový proces -----------------
cpu_txprocess: proces (cclk)
začít
pokud cclk = 0 'a pak cclk'event
Pokud cs = '1 'pak - load_status
- Cpu_status_reg_update <= (ostatní => '0 ');
- Elsif cpu_reg_update = '1 'pak
cpu_status_reg_update <= dasl_status_update_reg - dasl_status_reg
elsif cs = '0 'pak - cpu_read
cpu_status_reg_update (6 downto 0) <= cpu_status_reg_update (7 downto 1); - cpu_status_reg (6 downto 0);
- Dasl_status_reg (6 downto 0) <= dasl_status_reg (7 downto 1); - cpu_status_reg (6 downto 0);
cpu_status_reg_update (7) <= '0 ';
end if;
end if;
Ukončit proces cpu_txprocess;- CPU Vstup do FPGA Sériové proces -----------------
cpu_rxprocess: proces (cclk)
začít
pokud cclk = '1 'a pak cclk'event
- Pokud cpu_write = '1 'pak
pokud cs = '0 ', pak
cpu_control_reg <= CI & cpu_control_reg (7 downto 1);
end if;
- End if;
end if;
Ukončit proces cpu_rxprocess;
Prosím, pomozte mi ..
Problem je
a.Vždy přijde výstup bez povolení load_status.
pls pomozte mi, jestli můžeš ..Jsem pracující na čipu DASL,
Musím se konala v logice VHDL pro Interrupt v rozhraní cpu Microwire.Mám FPGA na interfce s CPU.
Dle manuálu, registr je stav aktualizován a srovnává s posledním status registru.pokud aktualizovaný stav registru není roven současný status registru, pak to generuje přerušení.a pak se CPU dostane výstup z FPGA.
Psal jsem kód, jako je tento
- Stav registru update
proces (mclk, load_status)
začítpokud mclk = '1 'a pak mclk'event
- Pokud power_up_activate = '1 'pak
pokud load_status = '1 'pak
dasl_status_update_reg <= dasl_status_reg;
elsif load_status = '0 'a power_up_activate = '1' pak
dasl_status_update_reg <= dasl_status_update_reg;
elsif power_up_activate = '0 ', pak
dasl_status_update_reg <= dasl_status_update_reg;
end if;
- Jinak dasl_status_update_reg <= (ostatní => '0 ');
- End if;
end if;
ukončení procesu;
- Přerušení generace -----------------
proces (mclk, rst_dasl)
začít
pokud rst_dasl = '0 ', pak
int <= '1 ';
elsif mclk = '1 'a pak mclk'event
- Pokud mclk = '1 'a pak mclk'event
- Pokud power_up_activate = '1 'pak
pokud load_status = '1 'pak
pokud dasl_status_update_reg / = dasl_status_reg pak - dasl_status_update_reg / = dasl_status_reg
int <= '0 ';
jinak - pokud dasl_status_update_reg / = dasl_status_reg THEN
int <= '1 ';
end if;
jiný int <= '1 ';
end if;
end if;
ukončení procesu;
- FPGA Výstup na CPU, sériový proces -----------------
cpu_txprocess: proces (cclk)
začít
pokud cclk = 0 'a pak cclk'event
Pokud cs = '1 'pak - load_status
- Cpu_status_reg_update <= (ostatní => '0 ');
- Elsif cpu_reg_update = '1 'pak
cpu_status_reg_update <= dasl_status_update_reg - dasl_status_reg
elsif cs = '0 'pak - cpu_read
cpu_status_reg_update (6 downto 0) <= cpu_status_reg_update (7 downto 1); - cpu_status_reg (6 downto 0);
- Dasl_status_reg (6 downto 0) <= dasl_status_reg (7 downto 1); - cpu_status_reg (6 downto 0);
cpu_status_reg_update (7) <= '0 ';
end if;
end if;
Ukončit proces cpu_txprocess;- CPU Vstup do FPGA Sériové proces -----------------
cpu_rxprocess: proces (cclk)
začít
pokud cclk = '1 'a pak cclk'event
- Pokud cpu_write = '1 'pak
pokud cs = '0 ', pak
cpu_control_reg <= CI & cpu_control_reg (7 downto 1);
end if;
- End if;
end if;
Ukončit proces cpu_rxprocess;
Prosím, pomozte mi ..
Problem je
a.Vždy přijde výstup bez povolení load_status.
pls pomozte mi, jestli můžeš ..Jsem pracující na čipu DASL,