📄 reg_bank.vhd
字号:
DPRA3 => addr_read2(3), -- Port B address[3] input bit DPO => data_out2B(i), -- Port B 1-bit data output SPO => open -- Port A 1-bit data output ); end generate; --reg_loop data_out1 <= data_out1A when addr_read1(4)='0' else data_out1B; data_out2 <= data_out2A when addr_read2(4)='0' else data_out2B; end generate; --xilinx_16x1d -- Option #4 -- Altera LPM_RAM_DP -- Xilinx users may need to comment out this section!!! altera_mem: if memory_type = "ALTERA_LPM" generate lpm_ram_dp_component1 : lpm_ram_dp GENERIC MAP ( lpm_width => 32, lpm_widthad => 5, rden_used => "FALSE", intended_device_family => "UNUSED", lpm_indata => "REGISTERED", lpm_wraddress_control => "REGISTERED", lpm_rdaddress_control => "UNREGISTERED", lpm_outdata => "UNREGISTERED", use_eab => "ON", lpm_type => "LPM_RAM_DP" ) PORT MAP ( wren => write_enable, wrclock => clk, data => reg_dest_new, rdaddress => addr_read1, wraddress => addr_write, q => data_out1 ); lpm_ram_dp_component2 : lpm_ram_dp GENERIC MAP ( lpm_width => 32, lpm_widthad => 5, rden_used => "FALSE", intended_device_family => "UNUSED", lpm_indata => "REGISTERED", lpm_wraddress_control => "REGISTERED", lpm_rdaddress_control => "UNREGISTERED", lpm_outdata => "UNREGISTERED", use_eab => "ON", lpm_type => "LPM_RAM_DP" ) PORT MAP ( wren => write_enable, wrclock => clk, data => reg_dest_new, rdaddress => addr_read2, wraddress => addr_write, q => data_out2 ); end generate; --altera_mem -- Option #5-- dual_port_mem_coregen:-- if memory_type = "DUAL_PORT_XILINX" generate-- reg_file_dp_ram_1: reg_file_dp_ram-- port map (-- addra => addr_read1,-- addrb => addr_write,-- clka => clk,-- clkb => clk,-- dinb => reg_dest_new,-- douta => data_out1,-- web => write_enable);---- reg_file_dp_ram_2: reg_file_dp_ram-- port map (-- addra => addr_read2,-- addrb => addr_write,-- clka => clk,-- clkb => clk,-- dinb => reg_dest_new,-- douta => data_out2,-- web => write_enable);-- end generate; --dual_port_mem-- dual_port_mem_xc4000xla: if memory_type = "DUAL_PORT_XILINX_XC4000XLA" generate-- reg_file_dp_ram_1: reg_file_dp_ram_xc4000xla-- port map (-- A => addr_write,-- DI => reg_dest_new,-- WR_EN => write_enable,-- WR_CLK => clk,-- DPRA => addr_read1,-- SPO => open,-- DPO => data_out1);-- -- reg_file_dp_ram_2: reg_file_dp_ram_xc4000xla-- port map (-- A => addr_write,-- DI => reg_dest_new,-- WR_EN => write_enable,-- WR_CLK => clk,-- DPRA => addr_read2,-- SPO => open,-- DPO => data_out2);-- end generate; --dual_port_mem -- Option #6 -- Generic Two-Port Synchronous RAM -- generic_tpram can be obtained from: -- http://www.opencores.org/cvsweb.shtml/generic_memories/ -- Supports ASICs (Artisan, Avant, and Virage) and Xilinx FPGA-- generic_mem:-- if memory_type = "OPENCORES_MEM" generate-- bank1 : generic_tpram port map (-- clk_a => clk,-- rst_a => '0',-- ce_a => '1',-- we_a => '0',-- oe_a => '1',-- addr_a => addr_read1,-- di_a => ZERO,-- do_a => data_out1,---- clk_b => clk,-- rst_b => '0',-- ce_b => '1',-- we_b => write_enable,-- oe_b => '0',-- addr_b => addr_write,-- di_a => reg_dest_new);---- bank2 : generic_tpram port map (-- clk_a => clk,-- rst_a => '0',-- ce_a => '1',-- we_a => '0',-- oe_a => '1',-- addr_a => addr_read2,-- di_a => ZERO,-- do_a => data_out2,---- clk_b => clk,-- rst_b => '0',-- ce_b => '1',-- we_b => write_enable,-- oe_b => '0',-- addr_b => addr_write,-- di_a => reg_dest_new);-- end generate; --generic_mem -- Option #7 -- Xilinx mode using four 16x16 banks-- xilinx_mem:-- if memory_type = "XILINX" generate-- bank1_high: ramb4_s16_s16 port map (-- clka => clk,-- rsta => sig_false,-- addra => addr_read1,-- dia => zero_sig,-- ena => sig_true,-- wea => sig_false,-- doa => data_out1(31 downto 16),---- clkb => clk,-- rstb => sig_false,-- addrb => addr_write,-- dib => reg_dest_new(31 downto 16),-- enb => sig_true,-- web => write_enable);---- bank1_low: ramb4_s16_s16 port map (-- clka => clk,-- rsta => sig_false,-- addra => addr_read1,-- dia => zero_sig,-- ena => sig_true,-- wea => sig_false,-- doa => data_out1(15 downto 0),---- clkb => clk,-- rstb => sig_false,-- addrb => addr_write,-- dib => reg_dest_new(15 downto 0),-- enb => sig_true,-- web => write_enable);---- bank2_high: ramb4_s16_s16 port map (-- clka => clk,-- rsta => sig_false,-- addra => addr_read2,-- dia => zero_sig,-- ena => sig_true,-- wea => sig_false,-- doa => data_out2(31 downto 16),---- clkb => clk,-- rstb => sig_false,-- addrb => addr_write,-- dib => reg_dest_new(31 downto 16),-- enb => sig_true,-- web => write_enable);---- bank2_low: ramb4_s16_s16 port map (-- clka => clk,-- rsta => sig_false,-- addra => addr_read2,-- dia => zero_sig,-- ena => sig_true,-- wea => sig_false,-- doa => data_out2(15 downto 0),---- clkb => clk,-- rstb => sig_false,-- addrb => addr_write,-- dib => reg_dest_new(15 downto 0),-- enb => sig_true,-- web => write_enable);-- end generate; --xilinx_memend; --architecture ram_block
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -