⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dep_tbgen.vhd

📁 ARM7的源代码
💻 VHD
📖 第 1 页 / 共 2 页
字号:
 	      port map (rst, clk, sdclk, plllock, 		error, address, data, 		ramsn, ramoen, rwenx, romsn, iosn, oen, read, writen, 	        brdyn, bexcn, 		sdcke, sdcsn, sdwen, sdrasn, sdcasn, sddqm, sdclk,		pio, wdog, dsuen, dsutx, dsurx, dsubre, dsuact, test,         	pci_rst_n, pci_clk, pci_gnt_in_n, pci_idsel_in,		pci_lock_n, pci_ad, pci_cbe_n, pci_frame_n, pci_irdy_n,		pci_trdy_n, pci_devsel_n, pci_stop_n, pci_perr_n, pci_par,		pci_req_n, pci_serr_n, pci_host, pci_66, pci_arb_req_n, 	  	pci_arb_gnt_n, power_state, pme_enable, pme_clear, pme_status );  end generate;-- processor (PCI, ethernet)    p2 : if PCIEN  and ETHEN generate      leon0 : leon_eth_pci port map (rst, clk, sdclk, plllock, 		error, address, data, 	ramsn, ramoen, rwenx, romsn, iosn, oen, read, writen, brdyn, 	bexcn, sdcke, sdcsn, sdwen, sdrasn, sdcasn, sddqm, sdclk,	pio, wdog, dsuen, dsutx, dsurx, dsubre, dsuact, test,         pci_rst_n, pci_clk, pci_gnt_in_n, pci_idsel_in,	pci_lock_n, pci_ad, pci_cbe_n, pci_frame_n, pci_irdy_n,	pci_trdy_n, pci_devsel_n, pci_stop_n, pci_perr_n, pci_par,	pci_req_n, pci_serr_n, pci_host, pci_66, pci_arb_req_n, 	pci_arb_gnt_n, power_state, pme_enable, pme_clear, pme_status,        emdio, etx_clk, erx_clk, erxd, erx_dv, erx_er, erx_col, erx_crs,        etxd, etx_en, etx_er, emdc,        emddis, epwrdwn, ereset, esleep, epause);    end generate;-- processor (no PCI, ethernet)    p3 : if not PCIEN  and ETHEN generate      leon0 : leon_eth port map (rst, clk, sdclk, plllock, 		error, address, data, 	ramsn, ramoen, rwenx, romsn, iosn, oen, read, writen, brdyn, 	bexcn, sdcke, sdcsn, sdwen, sdrasn, sdcasn, sddqm, sdclk,	pio, wdog, dsuen, dsutx, dsurx, dsubre, dsuact,         emdio, etx_clk, erx_clk, erxd, erx_dv, erx_er, erx_col, erx_crs,        etxd, etx_en, etx_er, emdc,        emddis, epwrdwn, ereset, esleep, epause, test);    end generate;-- write strobes  rwen <= rwenx when bytewrite else (rwenx(0) & rwenx(0) & rwenx(0) & rwenx(0));-- 8-bit rom   rom8d : if romwidth = 8 generate    pio(1 downto 0) <= "LL";	  -- 8-bit data bus      rom0 : iram         generic map (index => 0, abits => romdepth, echk => 2, tacc => romtacc,		     fname => romfile)        port map (A => address(romdepth-1 downto 0), D => data(31 downto 24),                  CE1 => romsn(0), WE => VCC, OE => oen);    rom2 : process (address, romsn, writen)    begin      if (writen and not romsn(1)) = '1' then        case address(1 downto 0) is	when "00" => data(31 downto 24) <= "00000001";	when "01" => data(31 downto 24) <= "00100011";	when "10" => data(31 downto 24) <= "01000101";	when others => data(31 downto 24) <= "01100111";        end case;      else data(31 downto 24) <= (others => 'Z'); end if;    end process;  end generate;-- 16-bit rom   rom16d : if romwidth = 16 generate    pio(1 downto 0) <= "LH";	  -- 16-bit data bus    romarr : for i in 0 to 1 generate      rom0 : iram 	generic map (index => i, abits => romdepth, echk => 4, tacc => romtacc,		     fname => romfile)        port map (A => address(romdepth downto 1), 		  D => data((31 - i*8) downto (24-i*8)), CE1 => romsn(0),		  WE => VCC, OE => oen);    end generate;    rom2 : process (address, romsn, writen)    begin      if (writen and not romsn(1)) = '1' then        case address(1 downto 0) is	when "00" => data(31 downto 16) <= "0000000100100011";	when others => data(31 downto 16) <= "0100010101100111";        end case;      else data(31 downto 16) <= (others => 'Z'); end if;    end process;  end generate;-- 32-bit rom   rom32d : if romwidth = 32 generate    pio(1 downto 0) <= "HH";	  -- 32-bit data bus    romarr : for i in 0 to 3 generate      rom0 : iram 	generic map (index => i, abits => romdepth, echk => 0, tacc => romtacc,		     fname => romfile)        port map (A => address(romdepth+1 downto 2), 		  D => data((31 - i*8) downto (24-i*8)), CE1 => romsn(0),		  WE => VCC, OE => oen);    end generate;    data(31 downto 0) <= "00000001001000110100010101100111" when (romsn(1) or not writen) = '0'     else (others => 'Z');  end generate;-- 8-bit ram  ram8d : if ramwidth = 8 generate      ram0 : iram         generic map (index => 0, abits => ramdepth, echk => 2, tacc => ramtacc,		     fname => ramfile)        port map (A => address(ramdepth-1 downto 0), D => data(31 downto 24),                  CE1 => ramsn(0), WE => rwen(0), OE => ramoen(0));  end generate;-- 16-bit ram  ram16d : if ramwidth = 16 generate    rambnk : for i in 0 to rambanks-1 generate      ramarr : for j in 0 to 1 generate        ram0 : iram 	  generic map (index => j, abits => ramdepth, echk => 4, 		       tacc => ramtacc, fname => ramfile)          port map (A => address(ramdepth downto 1),		    D => data((31 - j*8) downto (24-j*8)), CE1 => ramsn(i), 		    WE => rwen(j), OE => ramoen(i));      end generate;    end generate;  end generate;-- 32-bit ram  ram32d : if ramwidth = 32 generate    rambnk : for i in 0 to rambanks-1 generate      ramarr : for j in 0 to 3 generate        ram0 : iram 	  generic map (index => j, abits => ramdepth, echk => 0, 		       tacc => ramtacc, fname => ramfile)          port map (A => address(ramdepth+1 downto 2),		    D => data((31 - j*8) downto (24-j*8)), CE1 => ramsn(i), 		    WE => rwen(j), OE => ramoen(i));      end generate;    end generate;  end generate;-- boot message    bootmsg : process(rst)    begin      if rst'event and (rst = '1') then --'        print("LEON-2 generic testbench (leon2-"& LEON_VERSION & ")");        print("Bug reports to Jiri Gaisler, jiri@gaisler.com");	print("");        print("Testbench configuration:");        print(msg1); print(msg2); print("");      end if;    end process;-- optional sdram  sdram : if SDRAMEN 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;-- test module  testmod0 : testmod port map (clk, dsutx, dsurx, error, iosn, oen, read, 		writen, brdyn, bexcn, address(7 downto 0), data , pio);  test <= '1' when DISASS > 0 else '0';-- cross-strap UARTs  pio(14) <= to_XLHZ(pio(11));	-- RX1 <- TX2  pio(10) <= to_XLHZ(pio(15));	-- RX2 <- TX1  pio(12) <= to_XLHZ(pio(9));	-- CTS1 <- RTS2  pio(8) <= to_XLHZ(pio(13));	-- CTS2 <- RTS1  pio(15) <= 'H';  pio(13) <= 'H';  pio(11) <= 'H';  pio(9) <= 'H';  pio(2) <= 'H' when not bytewrite else 'L';  pio(3) <= wdog when WDOGEN else 'H'; -- WDOG output on IO3--  pio(3) <= clk2;  		  -- clk/2 as uart clock--  clk2 <= not clk2 when rising_edge(clk) else clk2;  wdog <= 'H';			  -- WDOG pull-up  error <= 'H';			  -- ERROR pull-up  data <= (others => 'H');  data <= buskeep(data) after 5 ns;-- waitstates   wsgen : process  begin    if (romtacc < (2*clkperiod - 20)) then pio(5 downto 4) <= "LL";    elsif (romtacc < (3*clkperiod - 20)) then pio(5 downto 4) <= "LH";    elsif (romtacc < (4*clkperiod - 20)) then pio(5 downto 4) <= "HL";    else pio(5 downto 4) <= "HH"; end if;    if (ramtacc < (2*clkperiod - 20)) then pio(7 downto 6) <= "LL";    elsif (ramtacc < (3*clkperiod - 20)) then pio(7 downto 6) <= "LH";    elsif (ramtacc < (4*clkperiod - 20)) then pio(7 downto 6) <= "HL";    else pio(7 downto 6) <= "HH"; end if;    wait on rst;  end process;end ;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -