📄 testbench.vhd
字号:
d3 : leon3mp generic map ( fabtech, memtech, padtech, clktech, ncpu, disas, dbguart, pclow ) port map (rst, clk, clkout, pllref, error, address, data, ramsn, ramoen, rwen, mben, iosn, romsn, oen, writen, sa(11 downto 0), sd, sdclk, sdcke, sdcsn, sdwen, sdrasn, sdcasn, sddqm, sdba, dsutx, dsurx, dsubren, dsuact, rxd1, txd1, ata_rst, ata_data, ata_da, ata_cs0, ata_cs1, ata_dior, ata_diow, ata_iordy, ata_intrq, ata_dmack, cf_power, cf_gnd_da, cf_atasel, cf_we, cf_csel, eth_aen, eth_readn, eth_writen, eth_nbe); -- optional sdram-- sd0 : if (CFG_SDEN = 1) and (CFG_SEPBUS = 0) generate-- u0: mt48lc16m16a2 generic map (index => 0, fname => sdramfile)-- PORT MAP(-- Dq => data(31 downto 16), Addr => address(14 downto 2),-- Ba => address(16 downto 15), Clk => sdclk, Cke => sdcke(0),-- Cs_n => sdcsn(0), Ras_n => sdrasn, Cas_n => sdcasn, We_n => sdwen,-- Dqm => sddqm(3 downto 2));-- u1: mt48lc16m16a2 generic map (index => 16, fname => sdramfile)-- PORT MAP(-- Dq => data(15 downto 0), Addr => address(14 downto 2),-- Ba => address(16 downto 15), Clk => sdclk, Cke => sdcke(0),-- Cs_n => sdcsn(0), Ras_n => sdrasn, Cas_n => sdcasn, We_n => sdwen,-- Dqm => sddqm(1 downto 0));-- u2: mt48lc16m16a2 generic map (index => 0, fname => sdramfile)-- PORT MAP(-- Dq => data(31 downto 16), Addr => address(14 downto 2),-- Ba => address(16 downto 15), Clk => sdclk, Cke => sdcke(0),-- Cs_n => sdcsn(1), Ras_n => sdrasn, Cas_n => sdcasn, We_n => sdwen,-- Dqm => sddqm(3 downto 2));-- u3: mt48lc16m16a2 generic map (index => 16, fname => sdramfile)-- PORT MAP(-- Dq => data(15 downto 0), Addr => address(14 downto 2),-- Ba => address(16 downto 15), Clk => sdclk, Cke => sdcke(0),-- Cs_n => sdcsn(1), Ras_n => sdrasn, Cas_n => sdcasn, We_n => sdwen,-- Dqm => sddqm(1 downto 0));-- end generate; sd1 : if (CFG_MCTRL_SDEN = 1) and (CFG_MCTRL_SEPBUS = 1) generate u0: mt48lc16m16a2 generic map (index => 0, fname => sdramfile) PORT MAP( Dq => sd(31 downto 16), Addr => sa(12 downto 0), Ba => sdba, Clk => sdclk, Cke => sdcke, Cs_n => sdcsn, Ras_n => sdrasn, Cas_n => sdcasn, We_n => sdwen, Dqm => sddqm(3 downto 2)); u1: mt48lc16m16a2 generic map (index => 16, fname => sdramfile) PORT MAP( Dq => sd(15 downto 0), Addr => sa(12 downto 0), Ba => sdba, Clk => sdclk, Cke => sdcke, Cs_n => sdcsn, Ras_n => sdrasn, Cas_n => sdcasn, We_n => sdwen, Dqm => sddqm(1 downto 0)); u2: mt48lc16m16a2 generic map (index => 0, fname => sdramfile) PORT MAP( Dq => sd(31 downto 16), Addr => sa(12 downto 0), Ba => sdba, Clk => sdclk, Cke => sdcke, Cs_n => sdcsn, Ras_n => sdrasn, Cas_n => sdcasn, We_n => sdwen, Dqm => sddqm(3 downto 2)); u3: mt48lc16m16a2 generic map (index => 16, fname => sdramfile) PORT MAP( Dq => sd(15 downto 0), Addr => sa(12 downto 0), Ba => sdba, Clk => sdclk, Cke => sdcke, Cs_n => sdcsn, Ras_n => sdrasn, Cas_n => sdcasn, We_n => sdwen, Dqm => sddqm(1 downto 0));-- sd64 : if (CFG_SD64 = 1) generate-- u4: mt48lc16m16a2 generic map (index => 0, fname => sdramfile)-- PORT MAP(-- Dq => sd(63 downto 48), Addr => sa(12 downto 0),-- Ba => sa(14 downto 13), Clk => sdclk, Cke => sdcke(0),-- Cs_n => sdcsn(0), Ras_n => sdrasn, Cas_n => sdcasn, We_n => sdwen,-- Dqm => sddqm(7 downto 6));-- u5: mt48lc16m16a2 generic map (index => 16, fname => sdramfile)-- PORT MAP(-- Dq => sd(47 downto 32), Addr => sa(12 downto 0),-- Ba => sa(14 downto 13), Clk => sdclk, Cke => sdcke(0),-- Cs_n => sdcsn(0), Ras_n => sdrasn, Cas_n => sdcasn, We_n => sdwen,-- Dqm => sddqm(5 downto 4));-- u6: mt48lc16m16a2 generic map (index => 0, fname => sdramfile)-- PORT MAP(-- Dq => sd(63 downto 48), Addr => sa(12 downto 0),-- Ba => sa(14 downto 13), Clk => sdclk, Cke => sdcke(0),-- Cs_n => sdcsn(1), Ras_n => sdrasn, Cas_n => sdcasn, We_n => sdwen,-- Dqm => sddqm(7 downto 6));-- u7: mt48lc16m16a2 generic map (index => 16, fname => sdramfile)-- PORT MAP(-- Dq => sd(47 downto 32), Addr => sa(12 downto 0),-- Ba => sa(14 downto 13), Clk => sdclk, Cke => sdcke(0),-- Cs_n => sdcsn(1), Ras_n => sdrasn, Cas_n => sdcasn, We_n => sdwen,-- Dqm => sddqm(5 downto 4));-- end generate; end generate; -- 8 bit prom prom0 : sram generic map (index => 6, abits => romdepth, fname => promfile) port map (address(romdepth-1 downto 0), data(31 downto 24), romsn, rwen, oen); sram0 : for i in 0 to (sramwidth/8)-1 generate sr0 : sram generic map (index => i, abits => sramdepth, fname => sramfile) port map (address(sramdepth+1 downto 2), data(31-i*8 downto 24-i*8), ramsn, rwen, ramoen); end generate; ata_dev0 : ata_device port map( ata_rst_n => ata_rst, ata_data => ata_data, ata_da => ata_da, ata_cs0 => ata_cs0, ata_cs1 => ata_cs1, ata_dior_n => ata_dior, ata_diow_n => ata_diow, ata_iordy => ata_iordy, ata_intrq => ata_intrq ); error <= 'H'; -- ERROR pull-up iuerr : process begin wait for 2500 ns; if to_x01(error) = '1' then wait on error; end if; assert (to_x01(error) = '1') report "*** IU in error mode, simulation halted ***" severity failure ; end process; data <= buskeep(data), (others => 'H') after 250 ns; sd <= buskeep(sd), (others => 'H') after 250 ns; test0 : grtestmod port map ( rst, clk, error, address(21 downto 2), data, iosn, oen, writen, brdyn); dsucom : process procedure dsucfg(signal dsurx : in std_ulogic; signal dsutx : out std_ulogic) is variable w32 : std_logic_vector(31 downto 0); variable c8 : std_logic_vector(7 downto 0); constant txp : time := 160 * 1 ns; begin dsutx <= '1'; dsurst <= '0'; wait for 500 ns; dsurst <= '1'; wait; wait for 5000 ns; txc(dsutx, 16#55#, txp); -- sync uart-- txc(dsutx, 16#c0#, txp);-- txa(dsutx, 16#90#, 16#00#, 16#00#, 16#00#, txp);-- txa(dsutx, 16#00#, 16#00#, 16#02#, 16#ae#, txp);-- txc(dsutx, 16#c0#, txp);-- txa(dsutx, 16#91#, 16#00#, 16#00#, 16#00#, txp);-- txa(dsutx, 16#00#, 16#00#, 16#06#, 16#ae#, txp);-- txc(dsutx, 16#c0#, txp);-- txa(dsutx, 16#90#, 16#00#, 16#00#, 16#24#, txp);-- txa(dsutx, 16#00#, 16#00#, 16#06#, 16#03#, txp);-- txc(dsutx, 16#c0#, txp);-- txa(dsutx, 16#90#, 16#00#, 16#00#, 16#20#, txp);-- txa(dsutx, 16#00#, 16#00#, 16#06#, 16#fc#, txp); txc(dsutx, 16#c0#, txp); txa(dsutx, 16#90#, 16#00#, 16#00#, 16#00#, txp); txa(dsutx, 16#00#, 16#00#, 16#00#, 16#2f#, txp); txc(dsutx, 16#c0#, txp); txa(dsutx, 16#91#, 16#00#, 16#00#, 16#00#, txp); txa(dsutx, 16#00#, 16#00#, 16#00#, 16#6f#, txp); txc(dsutx, 16#c0#, txp); txa(dsutx, 16#90#, 16#11#, 16#00#, 16#00#, txp); txa(dsutx, 16#00#, 16#00#, 16#00#, 16#00#, txp); txc(dsutx, 16#c0#, txp); txa(dsutx, 16#90#, 16#40#, 16#00#, 16#04#, txp); txa(dsutx, 16#00#, 16#02#, 16#20#, 16#01#, txp); txc(dsutx, 16#c0#, txp); txa(dsutx, 16#90#, 16#00#, 16#00#, 16#20#, txp); txa(dsutx, 16#00#, 16#00#, 16#00#, 16#02#, txp); txc(dsutx, 16#c0#, txp); txa(dsutx, 16#90#, 16#00#, 16#00#, 16#20#, txp); txa(dsutx, 16#00#, 16#00#, 16#00#, 16#0f#, txp); txc(dsutx, 16#c0#, txp); txa(dsutx, 16#40#, 16#00#, 16#43#, 16#10#, txp); txa(dsutx, 16#00#, 16#00#, 16#00#, 16#0f#, txp); txc(dsutx, 16#c0#, txp); txa(dsutx, 16#91#, 16#40#, 16#00#, 16#24#, txp); txa(dsutx, 16#00#, 16#00#, 16#00#, 16#24#, txp); txc(dsutx, 16#c0#, txp); txa(dsutx, 16#91#, 16#70#, 16#00#, 16#00#, txp); txa(dsutx, 16#00#, 16#00#, 16#00#, 16#03#, txp); txc(dsutx, 16#c0#, txp); txa(dsutx, 16#90#, 16#00#, 16#00#, 16#20#, txp); txa(dsutx, 16#00#, 16#00#, 16#ff#, 16#ff#, txp); txc(dsutx, 16#c0#, txp); txa(dsutx, 16#90#, 16#40#, 16#00#, 16#48#, txp); txa(dsutx, 16#00#, 16#00#, 16#00#, 16#12#, txp); txc(dsutx, 16#c0#, txp); txa(dsutx, 16#90#, 16#40#, 16#00#, 16#60#, txp); txa(dsutx, 16#00#, 16#00#, 16#12#, 16#10#, txp); txc(dsutx, 16#80#, txp); txa(dsutx, 16#90#, 16#00#, 16#00#, 16#00#, txp); rxi(dsurx, w32, txp, lresp); txc(dsutx, 16#a0#, txp); txa(dsutx, 16#40#, 16#00#, 16#00#, 16#00#, txp); rxi(dsurx, w32, txp, lresp); end; begin dsucfg(dsutx, dsurx); wait; end process;end ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -