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 + -
显示快捷键?