testbench.vhd
来自「leon3 patch for altera ep1c20 FPGA.」· VHDL 代码 · 共 469 行 · 第 1/2 页
VHD
469 行
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 + =
减小字号Ctrl + -
显示快捷键?