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

📄 leon3mp.vhd

📁 LEON3 SOC GRlip IP core. Memory controller.
💻 VHD
📖 第 1 页 / 共 2 页
字号:
  nodcom : if CFG_DSU = 0 generate ahbso(2) <= ahbs_none; end generate;  dcomgen : if CFG_AHB_UART = 1 generate    dcom0 : ahbuart                     -- Debug UART      generic map (hindex => CFG_NCPU, pindex => 4, paddr => 7)      port map (rstn, clkm, dui, duo, apbi, apbo(4), ahbmi, ahbmo(CFG_NCPU));      dui.rxd <= dsurx; dsutx <= duo.txd;  end generate;  nouah : if CFG_AHB_UART = 0 generate apbo(4) <= apb_none; end generate;  ahbjtaggen0 :if CFG_AHB_JTAG = 1 generate    ahbjtag0 : ahbjtag generic map(tech => fabtech, hindex => CFG_NCPU+CFG_AHB_UART)      port map(rstn, clkm, tck, tms, tdi, tdo, ahbmi, ahbmo(CFG_NCPU+CFG_AHB_UART),               open, open, open, open, open, open, open, gnd(0));  end generate;-------------------------------------------------------------------------  Memory controllers --------------------------------------------------------------------------------------------------------------------  mg2 : if CFG_MCTRL_LEON2 = 1 generate        -- LEON2 memory controller    sr1 : mctrl generic map (hindex => 5, pindex => 0, 	paddr => 0, srbanks => 1, ramaddr => 16#600#, rammask => 16#F00#)      port map (rstn, clkm, memi, memo, ahbsi, ahbso(5), apbi, apbo(0), wpo, open);  end generate;  memi.brdyn  <= '1'; memi.bexcn <= '1';  memi.writen <= '1'; memi.wrn <= "1111"; memi.bwidth <= "10";  mg0 : if (CFG_MCTRL_LEON2 = 0) generate     apbo(0) <= apb_none; ahbso(0) <= ahbs_none;    roms_pad : outpad generic map (tech => padtech)      port map (romsn, vcc(0));  end generate;  mgpads : if (CFG_MCTRL_LEON2 /= 0) generate     addr_pad : outpadv generic map (width => 23, tech => padtech)      port map (address, memo.address(24 downto 2));    roms_pad : outpad generic map (tech => padtech)      port map (romsn, memo.romsn(0));    rams_pad : outpad generic map (tech => padtech)      port map (ramsn, memo.ramsn(0));    oen_pad : outpad generic map (tech => padtech)      port map (oen, memo.oen);    wri_pad : outpad generic map (tech => padtech)      port map (writen, memo.writen);    mben_pad : outpadv generic map (width => 4, tech => padtech)      port map (mben, memo.mben);-- pragma translate_off    iosn_pad : outpad generic map (tech => padtech) 	port map (iosn, memo.iosn);-- pragma translate_on    bdr : for i in 0 to 3 generate      data_pad : iopadv generic map (tech => padtech, width => 8)        port map (data(31-i*8 downto 24-i*8), memo.data(31-i*8 downto 24-i*8),                  memo.bdrive(i), memi.data(31-i*8 downto 24-i*8));    end generate;  end generate;-------------------------------------------------------------------------  DDR memory controller -----------------------------------------------------------------------------------------------------------------  ddrsp0 : if (CFG_DDRSP /= 0) generate     ddrc : ddrspa generic map ( fabtech => virtex2, memtech => memtech, 	hindex => 4, haddr => 16#400#, hmask => 16#F00#, ioaddr => 1, 	pwron => CFG_DDRSP_INIT, MHz => BOARD_FREQ/1000, 	clkmul => CFG_DDRSP_FREQ/5, clkdiv => 20, col => CFG_DDRSP_COL, 	Mbyte => CFG_DDRSP_SIZE, ahbfreq => CPU_FREQ/1000, ddrbits => 16)     port map (	rstneg, rstn, lclk, clkm, lock, clkml, clkml,  ahbsi, ahbso(4),	ddr_clk, ddr_clkb, open, ddr_clk_fb,	ddr_cke, ddr_csb, ddr_web, ddr_rasb, ddr_casb, 	ddr_dm, ddr_dqs, ddr_adl, ddr_ba, ddr_dq);        ddr_clk0 <= ddr_clk(0); ddr_clk0b <= ddr_clkb(0);        ddr_cke0 <= ddr_cke(0); ddr_cs0b <= ddr_csb(0);        ddr_ad <= ddr_adl(12 downto 0);  end generate;-------------------------------------------------------------------------  APB Bridge and various periherals -----------------------------------------------------------------------------------------------------  apb0 : apbctrl                        -- AHB/APB bridge    generic map (hindex => 1, haddr => CFG_APBADDR)    port map (rstn, clkm, ahbsi, ahbso(1), apbi, apbo);  ua1 : if CFG_UART1_ENABLE /= 0 generate    uart1 : apbuart                     -- UART 1      generic map (pindex   => 1, paddr => 1, pirq => 2, console => dbguart,                   fifosize => CFG_UART1_FIFO)      port map (rstn, clkm, apbi, apbo(1), u1i, u1o);    u1i.rxd <= rxd1; u1i.ctsn <= '0'; u1i.extclk <= '0'; txd1 <= u1o.txd;  end generate;  noua0 : if CFG_UART1_ENABLE = 0 generate apbo(1) <= apb_none; end generate;  irqctrl : if CFG_IRQ3_ENABLE /= 0 generate    irqctrl0 : irqmp                    -- interrupt controller      generic map (pindex => 2, paddr => 2, ncpu => CFG_NCPU)      port map (rstn, clkm, apbi, apbo(2), irqo, irqi);  end generate;  irq3 : if CFG_IRQ3_ENABLE = 0 generate    x : for i in 0 to CFG_NCPU-1 generate      irqi(i).irl <= "0000";    end generate;    apbo(2) <= apb_none;  end generate;  gpt : if CFG_GPT_ENABLE /= 0 generate    timer0 : gptimer                    -- timer unit      generic map (pindex => 3, paddr => 3, pirq => CFG_GPT_IRQ,                   sepirq => CFG_GPT_SEPIRQ, sbits => CFG_GPT_SW, ntimers => CFG_GPT_NTIM,                   nbits  => CFG_GPT_TW)      port map (rstn, clkm, apbi, apbo(3), gpti, open);    gpti.dhalt <= dsuo.active; gpti.extclk <= '0';  end generate;  notim : if CFG_GPT_ENABLE = 0 generate apbo(3) <= apb_none; end generate;  gpio0 : if CFG_GRGPIO_ENABLE /= 0 generate     -- GR GPIO unit    grgpio0: grgpio      generic map( pindex => 11, paddr => 11, imask => CFG_GRGPIO_IMASK, 	nbits => 15 --CFG_GRGPIO_WIDTH      )      port map( rstn, clkm, apbi, apbo(11), gpioi, gpioo);        gpioi.din(7 downto 0) <= dip;        segm_lo <= gpioo.dout(6 downto 0);        segm_hi <= gpioo.dout(14 downto 8);   end generate;  kbd : if CFG_KBD_ENABLE /= 0 generate    ps20 : apbps2 generic map(pindex => 5, paddr => 5, pirq => 5)      port map(rstn, clkm, apbi, apbo(5), kbdi, kbdo);  end generate;  nokbd : if CFG_KBD_ENABLE = 0 generate 	apbo(5) <= apb_none; kbdo <= ps2o_none;  end generate;  kbdclk_pad : iopad generic map (tech => padtech)      port map (ps2_clk,kbdo.ps2_clk_o, kbdo.ps2_clk_oe, kbdi.ps2_clk_i);  kbdata_pad : iopad generic map (tech => padtech)        port map (ps2_data, kbdo.ps2_data_o, kbdo.ps2_data_oe, kbdi.ps2_data_i);--------------------------------------------------------------------------  ETHERNET --------------------------------------------------------------------------------------------------------------------------------  eth0 : if CFG_GRETH = 1 generate -- Gaisler ethernet MAC      e1 : grethm generic map(hindex => CFG_NCPU+CFG_AHB_UART+CFG_AHB_JTAG,	pindex => 15, paddr => 15, pirq => 12, memtech => memtech,        mdcscaler => CPU_FREQ/1000, enable_mdio => 1, fifosize => CFG_ETH_FIFO,        nsync => 1, edcl => CFG_DSU_ETH, edclbufsz => CFG_ETH_BUF,        macaddrh => CFG_ETH_ENM, macaddrl => CFG_ETH_ENL, 	ipaddrh => CFG_ETH_IPM, ipaddrl => CFG_ETH_IPL,	phyrstadr => 3, giga => CFG_GRETH1G)     port map( rst => rstn, clk => clkm, ahbmi => ahbmi,       ahbmo => ahbmo(CFG_NCPU+CFG_AHB_UART+CFG_AHB_JTAG), apbi => apbi,       apbo => apbo(15), ethi => ethi, etho => etho);     emdio_pad : iopad generic map (tech => padtech)      port map (emdio, etho.mdio_o, etho.mdio_oe, ethi.mdio_i);    etxc_pad : inpad generic map (tech => padtech)      port map (etx_clk, ethi.tx_clk);    erxc_pad : inpad generic map (tech => padtech)      port map (erx_clk, ethi.rx_clk);    erxd_pad : inpadv generic map (tech => padtech, width => 4)      port map (erxd, ethi.rxd(3 downto 0));    erxdv_pad : inpad generic map (tech => padtech)      port map (erx_dv, ethi.rx_dv);    erxer_pad : inpad generic map (tech => padtech)      port map (erx_er, ethi.rx_er);    erxco_pad : inpad generic map (tech => padtech)      port map (erx_col, ethi.rx_col);    erxcr_pad : inpad generic map (tech => padtech)      port map (erx_crs, ethi.rx_crs);    etxd_pad : outpadv generic map (tech => padtech, width => 4)      port map (etxd, etho.txd(3 downto 0));    etxen_pad : outpad generic map (tech => padtech)      port map (etx_en, etho.tx_en);    etxer_pad : outpad generic map (tech => padtech)      port map (etx_er, etho.tx_er);    emdc_pad : outpad generic map (tech => padtech)      port map (emdc, etho.mdc);    erstn_pad : outpad generic map (tech => padtech)      port map (erstn, rstn);  end generate;--------------------------------------------------------------------------  AHB DMA -----------------------------------------------------------------------------------------------------------------------------------  dma0 : ahbdma--    generic map (hindex => CFG_NCPU+CFG_AHB_UART+CFG_GRETH,--	pindex => 12, paddr => 12, dbuf => 32)--    port map (rstn, clkm, apbi, apbo(12), ahbmi, --	ahbmo(CFG_NCPU+CFG_AHB_UART+CFG_GRETH));----  at0 : ahbtrace--  generic map ( hindex  => 7, ioaddr => 16#200#, iomask => 16#E00#,--    tech    => memtech, irq     => 0, kbytes  => 8) --  port map ( rstn, clkm, ahbmi, ahbsi, ahbso(7));--------------------------------------------------------------------------  AHB ROM ---------------------------------------------------------------------------------------------------------------------------------  bpromgen : if CFG_AHBROMEN /= 0 generate    brom : entity work.ahbrom      generic map (hindex => 6, haddr => CFG_AHBRODDR, pipe => CFG_AHBROPIP)      port map ( rstn, clkm, ahbsi, ahbso(6));  end generate;  nobpromgen : if CFG_AHBROMEN = 0 generate     ahbso(6) <= ahbs_none;  end generate;--------------------------------------------------------------------------  AHB RAM ---------------------------------------------------------------------------------------------------------------------------------  ahbramgen : if CFG_AHBRAMEN = 1 generate    ahbram0 : ahbram generic map (hindex => 3, haddr => CFG_AHBRADDR,                                  tech   => CFG_MEMTECH, kbytes => CFG_AHBRSZ)      port map (rstn, clkm, ahbsi, ahbso(3));  end generate;  nram : if CFG_AHBRAMEN = 0 generate ahbso(3) <= ahbs_none; end generate;--------------------------------------------------------------------------  Drive unused bus elements  --------------------------------------------------------------------------------------------------------------  nam1 : for i in (CFG_NCPU+CFG_AHB_UART+CFG_AHB_JTAG+CFG_GRETH+1) to NAHBMST-1 generate    ahbmo(i) <= ahbm_none;  end generate;--  nap0 : for i in 9 to NAPBSLV-1-CFG_GRETH generate apbo(i) <= apb_none; end generate;--  nah0 : for i in 8 to NAHBSLV-1 generate ahbso(i) <= ahbs_none; end generate;--------------------------------------------------------------------------  Boot message  ----------------------------------------------------------------------------------------------------------------------------- pragma translate_off  x : report_version    generic map (      msg1 => "LEON3 Demonstration design for  MEMEC V2MB1000 board",      msg2 => "GRLIB Version " & tost(LIBVHDL_VERSION/100) & "." & tost((LIBVHDL_VERSION mod 10)/10)      & "." & tost(LIBVHDL_VERSION mod 100),      msg3 => "Target technology: " & tech_table(fabtech) & ",  memory library: " & tech_table(memtech),      mdel => 1      );-- pragma translate_onend rtl;

⌨️ 快捷键说明

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