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

📄 leon3mp.vhd

📁 This leon3 design is tailored to the Altera NiosII Startix2 Development board, with 16-bit DDR SDR
💻 VHD
📖 第 1 页 / 共 2 页
字号:
        generic map (i, fabtech, memtech, CFG_NWIN, CFG_DSU, CFG_FPU, CFG_V8,                   0, CFG_MAC, pclow, 0, CFG_NWP, CFG_ICEN, CFG_IREPL, CFG_ISETS, CFG_ILINE,                   CFG_ISETSZ, CFG_ILOCK, CFG_DCEN, CFG_DREPL, CFG_DSETS, CFG_DLINE, CFG_DSETSZ,                   CFG_DLOCK, CFG_DSNOOP, CFG_ILRAMEN, CFG_ILRAMSZ, CFG_ILRAMADDR, CFG_DLRAMEN,                   CFG_DLRAMSZ, CFG_DLRAMADDR, CFG_MMUEN, CFG_ITLBNUM, CFG_DTLBNUM, CFG_TLB_TYPE, CFG_TLB_REP,                   CFG_LDDEL, disas, CFG_ITBSZ, CFG_PWD, CFG_SVT, CFG_RSTADDR, NCPU-1)        port map (clkm, rstn, ahbmi, ahbmo(i), ahbsi, ahbso,                irqi(i), irqo(i), dbgi(i), dbgo(i));    end generate;    errorn_pad : odpad generic map (tech => padtech) port map (errorn, dbgo(0).error);    dsugen : if CFG_DSU = 1 generate      dsu0 : dsu3                         -- LEON3 Debug Support Unit        generic map (hindex => 2, haddr => 16#900#, hmask => 16#F00#,                   ncpu   => NCPU, tbits => 30, tech => memtech, irq => 0, kbytes => CFG_ATBSZ)        port map (rstn, clkm, ahbmi, ahbsi, ahbso(2), dbgo, dbgi, dsui, dsuo);          dsui.enable <= '1';          dsubre_pad : inpad generic map (tech  => padtech) port map (dsubre, dsui.break);      dsuact_pad : outpad generic map (tech => padtech) port map (dsuact, dsuo.active);    end generate;  end generate;  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 => NCPU, pindex => 4, paddr => 7)      port map (rstn, clkm, dui, duo, apbi, apbo(4), ahbmi, ahbmo(NCPU));    dsurx_pad : inpad generic map (tech  => padtech) port map (rxd1, dui.rxd);    dsutx_pad : outpad generic map (tech => padtech) port map (txd1, duo.txd);  end generate;  nouah : if CFG_AHB_UART = 0 generate apbo(7) <= apb_none; end generate;  ahbjtaggen0 :if CFG_AHB_JTAG = 1 generate    ahbjtag0 : ahbjtag generic map(tech => fabtech, hindex => NCPU+CFG_AHB_UART)      port map(rstn, clkm, tck, tms, tdi, tdo, ahbmi, ahbmo(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 : smc_mctrl generic map (hindex => 0, pindex => 0, paddr => 0, 	ramaddr => 16#400#+16#600#*CFG_DDRSP, rammask =>16#F00#, srbanks => 1, 	sden => 0, ram8 => 1)    port map (rstn, clkm, memi, memo, ahbsi, ahbso(0), apbi, apbo(0), wpo, open,             s_eth_aen, s_eth_readn, s_eth_writen, s_eth_nbe);  end generate;  wpn <= '1'; byten <= '0';  memi.brdyn  <= '1'; memi.bexcn <= '1';  memi.writen <= '1'; memi.wrn <= "1111"; memi.bwidth <= "00";  mg0 : if CFG_MCTRL_LEON2 = 0 generate	-- no prom/sram pads    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 = 1 generate	-- prom/sram pads    addr_pad : outpadv generic map (width => 24, tech => padtech)      port map (address, memo.address(23 downto 0));    roms_pad : outpad generic map (tech => padtech)      port map (romsn, memo.romsn(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);-- pragma translate_off   iosn_pad : outpad generic map (tech => padtech)      port map (iosn, memo.iosn);-- pragma translate_on       ssram_adv_n_pad : outpad generic map (tech => padtech) 	port map (ssram_adv_n, vcc(0));     ssram_adsp_n_pad : outpad generic map (tech => padtech) 	port map (ssram_adsp_n, gnd(0));     ssaddr_pad : outpadv generic map (width => 19, tech => padtech) 	port map (ssaddr, memo.address(20 downto 2));     ssram_adscn_pad : outpad generic map (tech => padtech) 	port map (ssram_adscn, vcc(0));     ssrams_pad : outpad generic map ( tech => padtech) 	port map (ssram_cen, memo.ramsn(0));     ssram_oen_pad  : outpad generic map (tech => padtech) 	port map (ssram_oen, memo.oen);    ssram_rwen_pad : outpadv generic map (width => 4, tech => padtech) 	port map (ssram_bw, memo.wrn);     ssram_wri_pad  : outpad generic map (tech => padtech) 	port map (ssram_wen, memo.writen);    ssram_data_pads : iopadvv generic map (tech => padtech, width => 32)      port map (ssdata, memo.data, memo.vbdrive, ssd);    memi.data(31 downto 0) <= ssd when memo.ramsn(0) = '0' else prd;   -- for smc lan chip   eth_aen_pad : outpad generic map (tech => padtech)        port map (eth_aen, s_eth_aen);   eth_readn_pad : outpad generic map (tech => padtech)       port map (eth_readn, s_eth_readn);   eth_writen_pad : outpad generic map (tech => padtech)       port map (eth_writen, s_eth_writen);   eth_nbe_pad : outpadv generic map (width => 4, tech => padtech)       port map (eth_nbe, s_eth_nbe);   data_pad : iopadvv generic map (tech => padtech, width => 32)        port map (data(31 downto 0), memo.data(31 downto 0),                  memo.vbdrive, prd);  end generate;  ddrsp0 : if (CFG_DDRSP /= 0) generate     ddrc0 : ddrspa generic map ( fabtech => fabtech, memtech => memtech, 	hindex => 3, haddr => 16#400#, hmask => 16#F00#, ioaddr => 1, 	pwron => CFG_DDRSP_INIT, MHz => BOARD_FREQ/1000, 	clkmul => CFG_DDRSP_FREQ/5, clkdiv => 10, ahbfreq => CPU_FREQ/1000,	col => CFG_DDRSP_COL, Mbyte => CFG_DDRSP_SIZE, ddrbits => 16)     port map (	resetn, rstn, ddr_clkin, clkm, lock, clkml, clkml, ahbsi, ahbso(3),	ddr_clkv, ddr_clkbv, open, gnd(0),	ddr_ckev, ddr_csbv, ddr_web, ddr_rasb, ddr_casb, 	ddr_dm, ddr_dqs, ddr_adl, ddr_ba, ddr_dq);        ddr_ad <= ddr_adl(12 downto 0);        ddr_clk <= ddr_clkv(0); ddr_clkn <= ddr_clkbv(0);        ddr_cke <= ddr_ckev(0); ddr_csb <= ddr_csbv(0);  end generate;  ddrsp1 : if (CFG_DDRSP = 0) generate     ddr_cke <= '0'; ddr_csb <= '1'; lock <= '1';  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.ctsn <= '0'; u1i.extclk <= '0';    upads : if CFG_AHB_UART = 0 generate      u1i.rxd <= rxd1; txd1 <= u1o.txd;    end generate;  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 => 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 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     -- GPIO unit    grgpio0: grgpio    generic map(pindex => 5, paddr => 5, imask => CFG_GRGPIO_IMASK, nbits => CFG_GRGPIO_WIDTH)    port map(rst => rstn, clk => clkm, apbi => apbi, apbo => apbo(5),    gpioi => gpioi, gpioo => gpioo);    pio_pads : for i in 0 to CFG_GRGPIO_WIDTH-1 generate        pio_pad : iopad generic map (tech => padtech)            port map (gpio(i), gpioo.dout(i), gpioo.oen(i), gpioi.din(i));    end generate;  end generate;  --------------------------------------------------------------------------  ATA Controller --------------------------------------------------------------------------------------------------------------------------  atac : if CFG_ATA = 1 generate     atac0 : atactrl generic map( hindex => 5, haddr => CFG_ATAIO,         hmask => 16#fff#, pirq => CFG_ATAIRQ, TWIDTH  => 8, -- counter width         -- PIO mode 0 settings (@100MHz clock)         PIO_mode0_T1   => 6,   -- 70ns         PIO_mode0_T2   => 28,  -- 290ns         PIO_mode0_T4   => 2,   -- 30ns         PIO_mode0_Teoc => 23   -- 240ns ==> T0 - T1 - T2 = 600 - 70 - 290 = 240      )      port map( rst => rstn, arst => '1', clk => clkm, ahbsi => ahbsi,         ahbso => ahbso(5), cfo => cf, ata_resetn => ata.rst,          ddin => ata.ddi, ddout => ata.ddo, ddoe => ata.oen, da => ata.da,          cs0n => ata.cs0, cs1n => ata.cs1, diorn => ata.dior, diown => ata.diow,         iordy => ata.iordy, intrq => ata.intrq, dmack => ata.dmack);             ata_data_pad : iopadv generic map (tech => padtech, width => 16, oepol => 1)         port map (ata_data, ata.ddo, ata.oen, ata.ddi);       ata_da_pad : outpadv generic map (tech => padtech, width => 3)         port map (ata_da, ata.da);       ata_cs0_pad : outpad generic map (tech => padtech)         port map (ata_cs0, ata.cs0);       ata_cs1_pad : outpad generic map (tech => padtech)         port map (ata_cs1, ata.cs1);       ata_dior_pad : outpad generic map (tech => padtech)         port map (ata_dior, ata.dior);       ata_diow_pad : outpad generic map (tech => padtech)         port map (ata_diow, ata.diow);       iordy_pad : inpad generic map (tech => padtech)         port map (ata_iordy, ata.iordy);       intrq_pad : inpad generic map (tech => padtech)         port map (ata_intrq, ata.intrq);       dmack_pad : outpad generic map (tech => padtech)         port map (ata_dmack, ata.dmack);              -- for CompactFlach mode selection       cf_gnd_da_pad : outpadv generic map (tech => padtech, width => 8)         port map (cf_gnd_da, cf.da);       cf_atasel_pad : outpad generic map (tech => padtech)         port map (cf_atasel, cf.atasel);       cf_we_pad : outpad generic map (tech => padtech)         port map (cf_we, cf.we);       cf_power_pad : outpad generic map (tech => padtech)         port map (cf_power, cf.power);--       cf_csel_pad : outpad generic map (tech => padtech)--         port map (cf_csel, cf.csel);        end generate;--------------------------------------------------------------------------  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 => 7, haddr => CFG_AHBRADDR,                                  tech   => CFG_MEMTECH, kbytes => CFG_AHBRSZ)      port map (rstn, clkm, ahbsi, ahbso(7));  end generate;  nram : if CFG_AHBRAMEN = 0 generate ahbso(7) <= ahbs_none; end generate;--------------------------------------------------------------------------  Drive unused bus elements  --------------------------------------------------------------------------------------------------------------  nam1 : for i in (NCPU+CFG_AHB_UART+CFG_AHB_JTAG) to NAHBMST-1 generate    ahbmo(i) <= ahbm_none;  end generate;--  nap0 : for i in 6 to NAPBSLV-1 generate apbo(i) <= apb_none; end generate;--  nah0 : for i in 7 to NAHBSLV-1 generate ahbso(i) <= ahbs_none; end generate;  -- invert signal for input via a key  dsubre  <= not dsubren;  -- for smc lan chip  eth_lclk     <= vcc(0);  eth_nads     <= gnd(0);  eth_ncycle   <= vcc(0);  eth_wnr      <= vcc(0);  eth_nvlbus   <= vcc(0);  eth_nrdyrtn  <= vcc(0);  eth_ndatacs  <= vcc(0);--------------------------------------------------------------------------  Boot message  ----------------------------------------------------------------------------------------------------------------------------- pragma translate_off  x : report_version   generic map (   msg1 => "LEON3 Altera EP2C60 SSRAM/DDR Demonstration design",   msg2 => "GRLIB Version " & tost(LIBVHDL_VERSION/1000) & "." & tost((LIBVHDL_VERSION mod 1000)/100)      & "." & tost(LIBVHDL_VERSION mod 100) & ", build " & tost(LIBVHDL_BUILD),   msg3 => "Target technology: " & tech_table(fabtech) & ",  memory library: " & tech_table(memtech),   mdel => 1  );-- pragma translate_onend;

⌨️ 快捷键说明

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