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

📄 bram1_elaborate.vhd

📁 实用的程序代码
💻 VHD
字号:
LIBRARY unisim;
USE unisim.vcomponents.ALL;

--------------------------------------------------------------------------------
-- bram1_elaborate.vhd
--------------------------------------------------------------------------------
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;

ENTITY bram1_elaborate IS
GENERIC (
	C_PORTA_AWIDTH : INTEGER := 32;
	C_PORTA_DWIDTH : INTEGER := 64;
	C_PORTB_AWIDTH : INTEGER := 32;
	C_PORTB_DWIDTH : INTEGER := 64;
	C_NUM_WE : INTEGER := 8);
PORT (
	-- instance GLOBAL
	BRAM_Addr_B : IN STD_LOGIC_VECTOR(0 TO 31);
	BRAM_Dout_A : IN STD_LOGIC_VECTOR(0 TO 63);
	BRAM_EN_A : IN STD_LOGIC;
	BRAM_Dout_B : IN STD_LOGIC_VECTOR(0 TO 63);
	BRAM_EN_B : IN STD_LOGIC;
	BRAM_Din_A : OUT STD_LOGIC_VECTOR(0 TO 63);
	BRAM_Din_B : OUT STD_LOGIC_VECTOR(0 TO 63);
	BRAM_Clk_A : IN STD_LOGIC;
	BRAM_WEN_A : IN STD_LOGIC_VECTOR(0 TO 7);
	BRAM_WEN_B : IN STD_LOGIC_VECTOR(0 TO 7);
	BRAM_Clk_B : IN STD_LOGIC;
	BRAM_Rst_A : IN STD_LOGIC;
	BRAM_Rst_B : IN STD_LOGIC;
	BRAM_Addr_A : IN STD_LOGIC_VECTOR(0 TO 31));
END bram1_elaborate;

ARCHITECTURE IMP OF bram1_elaborate IS

--------------------------------------------------------------------------------
COMPONENT RAMB16_S4_S4 IS
PORT (
	CLKB : IN STD_LOGIC;
	ADDRA : IN STD_LOGIC_VECTOR(11 DOWNTO 0);
	ADDRB : IN STD_LOGIC_VECTOR(11 DOWNTO 0);
	DOA : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
	DOB : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
	ENA : IN STD_LOGIC;
	SSRA : IN STD_LOGIC;
	ENB : IN STD_LOGIC;
	SSRB : IN STD_LOGIC;
	DIA : IN STD_LOGIC_VECTOR(3 DOWNTO 0);
	DIB : IN STD_LOGIC_VECTOR(3 DOWNTO 0);
	WEA : IN STD_LOGIC;
	WEB : IN STD_LOGIC;
	CLKA : IN STD_LOGIC);
END COMPONENT;

--------------------------------------------------------------------------------
-- internal signals
--------------------------------------------------------------------------------

	SIGNAL dina : STD_LOGIC_VECTOR(63 DOWNTO 0);

	SIGNAL dinb : STD_LOGIC_VECTOR(63 DOWNTO 0);

	SIGNAL douta : STD_LOGIC_VECTOR(63 DOWNTO 0);

	SIGNAL doutb : STD_LOGIC_VECTOR(63 DOWNTO 0);

	SIGNAL net_gnd0 : STD_LOGIC;

BEGIN

--------------------------------------------------------------------------------
-- Power assignments
net_gnd0 <= '0';
--------------------------------------------------------------------------------
-- Constant assignments
--------------------------------------------------------------------------------
-- Top-level port assignments
dina <= BRAM_Dout_A;
dinb <= BRAM_Dout_B;
BRAM_Din_A <= douta;
BRAM_Din_B <= doutb;
--------------------------------------------------------------------------------
-- Lower-level assignments
--------------------------------------------------------------------------------
-- Tri-state assignments

--------------------------------------------------------------------------------
ramb16_s4_s4_0 : RAMB16_S4_S4
PORT MAP (
	CLKB => BRAM_Clk_B,
	ADDRA => BRAM_Addr_A(17 TO 28),
	ADDRB => BRAM_Addr_B(17 TO 28),
	DOA => douta(63 DOWNTO 60),
	DOB => doutb(63 DOWNTO 60),
	ENA => BRAM_EN_A,
	SSRA => net_gnd0,
	ENB => BRAM_EN_B,
	SSRB => net_gnd0,
	DIA => dina(63 DOWNTO 60),
	DIB => dinb(63 DOWNTO 60),
	WEA => BRAM_WEN_A(0),
	WEB => BRAM_WEN_B(0),
	CLKA => BRAM_Clk_A);

--------------------------------------------------------------------------------
ramb16_s4_s4_1 : RAMB16_S4_S4
PORT MAP (
	CLKB => BRAM_Clk_B,
	ADDRA => BRAM_Addr_A(17 TO 28),
	ADDRB => BRAM_Addr_B(17 TO 28),
	DOA => douta(59 DOWNTO 56),
	DOB => doutb(59 DOWNTO 56),
	ENA => BRAM_EN_A,
	SSRA => net_gnd0,
	ENB => BRAM_EN_B,
	SSRB => net_gnd0,
	DIA => dina(59 DOWNTO 56),
	DIB => dinb(59 DOWNTO 56),
	WEA => BRAM_WEN_A(0),
	WEB => BRAM_WEN_B(0),
	CLKA => BRAM_Clk_A);

--------------------------------------------------------------------------------
ramb16_s4_s4_2 : RAMB16_S4_S4
PORT MAP (
	CLKB => BRAM_Clk_B,
	ADDRA => BRAM_Addr_A(17 TO 28),
	ADDRB => BRAM_Addr_B(17 TO 28),
	DOA => douta(55 DOWNTO 52),
	DOB => doutb(55 DOWNTO 52),
	ENA => BRAM_EN_A,
	SSRA => net_gnd0,
	ENB => BRAM_EN_B,
	SSRB => net_gnd0,
	DIA => dina(55 DOWNTO 52),
	DIB => dinb(55 DOWNTO 52),
	WEA => BRAM_WEN_A(1),
	WEB => BRAM_WEN_B(1),
	CLKA => BRAM_Clk_A);

--------------------------------------------------------------------------------
ramb16_s4_s4_3 : RAMB16_S4_S4
PORT MAP (
	CLKB => BRAM_Clk_B,
	ADDRA => BRAM_Addr_A(17 TO 28),
	ADDRB => BRAM_Addr_B(17 TO 28),
	DOA => douta(51 DOWNTO 48),
	DOB => doutb(51 DOWNTO 48),
	ENA => BRAM_EN_A,
	SSRA => net_gnd0,
	ENB => BRAM_EN_B,
	SSRB => net_gnd0,
	DIA => dina(51 DOWNTO 48),
	DIB => dinb(51 DOWNTO 48),
	WEA => BRAM_WEN_A(1),
	WEB => BRAM_WEN_B(1),
	CLKA => BRAM_Clk_A);

--------------------------------------------------------------------------------
ramb16_s4_s4_4 : RAMB16_S4_S4
PORT MAP (
	CLKB => BRAM_Clk_B,
	ADDRA => BRAM_Addr_A(17 TO 28),
	ADDRB => BRAM_Addr_B(17 TO 28),
	DOA => douta(47 DOWNTO 44),
	DOB => doutb(47 DOWNTO 44),
	ENA => BRAM_EN_A,
	SSRA => net_gnd0,
	ENB => BRAM_EN_B,
	SSRB => net_gnd0,
	DIA => dina(47 DOWNTO 44),
	DIB => dinb(47 DOWNTO 44),
	WEA => BRAM_WEN_A(2),
	WEB => BRAM_WEN_B(2),
	CLKA => BRAM_Clk_A);

--------------------------------------------------------------------------------
ramb16_s4_s4_5 : RAMB16_S4_S4
PORT MAP (
	CLKB => BRAM_Clk_B,
	ADDRA => BRAM_Addr_A(17 TO 28),
	ADDRB => BRAM_Addr_B(17 TO 28),
	DOA => douta(43 DOWNTO 40),
	DOB => doutb(43 DOWNTO 40),
	ENA => BRAM_EN_A,
	SSRA => net_gnd0,
	ENB => BRAM_EN_B,
	SSRB => net_gnd0,
	DIA => dina(43 DOWNTO 40),
	DIB => dinb(43 DOWNTO 40),
	WEA => BRAM_WEN_A(2),
	WEB => BRAM_WEN_B(2),
	CLKA => BRAM_Clk_A);

--------------------------------------------------------------------------------
ramb16_s4_s4_6 : RAMB16_S4_S4
PORT MAP (
	CLKB => BRAM_Clk_B,
	ADDRA => BRAM_Addr_A(17 TO 28),
	ADDRB => BRAM_Addr_B(17 TO 28),
	DOA => douta(39 DOWNTO 36),
	DOB => doutb(39 DOWNTO 36),
	ENA => BRAM_EN_A,
	SSRA => net_gnd0,
	ENB => BRAM_EN_B,
	SSRB => net_gnd0,
	DIA => dina(39 DOWNTO 36),
	DIB => dinb(39 DOWNTO 36),
	WEA => BRAM_WEN_A(3),
	WEB => BRAM_WEN_B(3),
	CLKA => BRAM_Clk_A);

--------------------------------------------------------------------------------
ramb16_s4_s4_7 : RAMB16_S4_S4
PORT MAP (
	CLKB => BRAM_Clk_B,
	ADDRA => BRAM_Addr_A(17 TO 28),
	ADDRB => BRAM_Addr_B(17 TO 28),
	DOA => douta(35 DOWNTO 32),
	DOB => doutb(35 DOWNTO 32),
	ENA => BRAM_EN_A,
	SSRA => net_gnd0,
	ENB => BRAM_EN_B,
	SSRB => net_gnd0,
	DIA => dina(35 DOWNTO 32),
	DIB => dinb(35 DOWNTO 32),
	WEA => BRAM_WEN_A(3),
	WEB => BRAM_WEN_B(3),
	CLKA => BRAM_Clk_A);

--------------------------------------------------------------------------------
ramb16_s4_s4_8 : RAMB16_S4_S4
PORT MAP (
	CLKB => BRAM_Clk_B,
	ADDRA => BRAM_Addr_A(17 TO 28),
	ADDRB => BRAM_Addr_B(17 TO 28),
	DOA => douta(31 DOWNTO 28),
	DOB => doutb(31 DOWNTO 28),
	ENA => BRAM_EN_A,
	SSRA => net_gnd0,
	ENB => BRAM_EN_B,
	SSRB => net_gnd0,
	DIA => dina(31 DOWNTO 28),
	DIB => dinb(31 DOWNTO 28),
	WEA => BRAM_WEN_A(4),
	WEB => BRAM_WEN_B(4),
	CLKA => BRAM_Clk_A);

--------------------------------------------------------------------------------
ramb16_s4_s4_9 : RAMB16_S4_S4
PORT MAP (
	CLKB => BRAM_Clk_B,
	ADDRA => BRAM_Addr_A(17 TO 28),
	ADDRB => BRAM_Addr_B(17 TO 28),
	DOA => douta(27 DOWNTO 24),
	DOB => doutb(27 DOWNTO 24),
	ENA => BRAM_EN_A,
	SSRA => net_gnd0,
	ENB => BRAM_EN_B,
	SSRB => net_gnd0,
	DIA => dina(27 DOWNTO 24),
	DIB => dinb(27 DOWNTO 24),
	WEA => BRAM_WEN_A(4),
	WEB => BRAM_WEN_B(4),
	CLKA => BRAM_Clk_A);

--------------------------------------------------------------------------------
ramb16_s4_s4_10 : RAMB16_S4_S4
PORT MAP (
	CLKB => BRAM_Clk_B,
	ADDRA => BRAM_Addr_A(17 TO 28),
	ADDRB => BRAM_Addr_B(17 TO 28),
	DOA => douta(23 DOWNTO 20),
	DOB => doutb(23 DOWNTO 20),
	ENA => BRAM_EN_A,
	SSRA => net_gnd0,
	ENB => BRAM_EN_B,
	SSRB => net_gnd0,
	DIA => dina(23 DOWNTO 20),
	DIB => dinb(23 DOWNTO 20),
	WEA => BRAM_WEN_A(5),
	WEB => BRAM_WEN_B(5),
	CLKA => BRAM_Clk_A);

--------------------------------------------------------------------------------
ramb16_s4_s4_11 : RAMB16_S4_S4
PORT MAP (
	CLKB => BRAM_Clk_B,
	ADDRA => BRAM_Addr_A(17 TO 28),
	ADDRB => BRAM_Addr_B(17 TO 28),
	DOA => douta(19 DOWNTO 16),
	DOB => doutb(19 DOWNTO 16),
	ENA => BRAM_EN_A,
	SSRA => net_gnd0,
	ENB => BRAM_EN_B,
	SSRB => net_gnd0,
	DIA => dina(19 DOWNTO 16),
	DIB => dinb(19 DOWNTO 16),
	WEA => BRAM_WEN_A(5),
	WEB => BRAM_WEN_B(5),
	CLKA => BRAM_Clk_A);

--------------------------------------------------------------------------------
ramb16_s4_s4_12 : RAMB16_S4_S4
PORT MAP (
	CLKB => BRAM_Clk_B,
	ADDRA => BRAM_Addr_A(17 TO 28),
	ADDRB => BRAM_Addr_B(17 TO 28),
	DOA => douta(15 DOWNTO 12),
	DOB => doutb(15 DOWNTO 12),
	ENA => BRAM_EN_A,
	SSRA => net_gnd0,
	ENB => BRAM_EN_B,
	SSRB => net_gnd0,
	DIA => dina(15 DOWNTO 12),
	DIB => dinb(15 DOWNTO 12),
	WEA => BRAM_WEN_A(6),
	WEB => BRAM_WEN_B(6),
	CLKA => BRAM_Clk_A);

--------------------------------------------------------------------------------
ramb16_s4_s4_13 : RAMB16_S4_S4
PORT MAP (
	CLKB => BRAM_Clk_B,
	ADDRA => BRAM_Addr_A(17 TO 28),
	ADDRB => BRAM_Addr_B(17 TO 28),
	DOA => douta(11 DOWNTO 8),
	DOB => doutb(11 DOWNTO 8),
	ENA => BRAM_EN_A,
	SSRA => net_gnd0,
	ENB => BRAM_EN_B,
	SSRB => net_gnd0,
	DIA => dina(11 DOWNTO 8),
	DIB => dinb(11 DOWNTO 8),
	WEA => BRAM_WEN_A(6),
	WEB => BRAM_WEN_B(6),
	CLKA => BRAM_Clk_A);

--------------------------------------------------------------------------------
ramb16_s4_s4_14 : RAMB16_S4_S4
PORT MAP (
	CLKB => BRAM_Clk_B,
	ADDRA => BRAM_Addr_A(17 TO 28),
	ADDRB => BRAM_Addr_B(17 TO 28),
	DOA => douta(7 DOWNTO 4),
	DOB => doutb(7 DOWNTO 4),
	ENA => BRAM_EN_A,
	SSRA => net_gnd0,
	ENB => BRAM_EN_B,
	SSRB => net_gnd0,
	DIA => dina(7 DOWNTO 4),
	DIB => dinb(7 DOWNTO 4),
	WEA => BRAM_WEN_A(7),
	WEB => BRAM_WEN_B(7),
	CLKA => BRAM_Clk_A);

--------------------------------------------------------------------------------
ramb16_s4_s4_15 : RAMB16_S4_S4
PORT MAP (
	CLKB => BRAM_Clk_B,
	ADDRA => BRAM_Addr_A(17 TO 28),
	ADDRB => BRAM_Addr_B(17 TO 28),
	DOA => douta(3 DOWNTO 0),
	DOB => doutb(3 DOWNTO 0),
	ENA => BRAM_EN_A,
	SSRA => net_gnd0,
	ENB => BRAM_EN_B,
	SSRB => net_gnd0,
	DIA => dina(3 DOWNTO 0),
	DIB => dinb(3 DOWNTO 0),
	WEA => BRAM_WEN_A(7),
	WEB => BRAM_WEN_B(7),
	CLKA => BRAM_Clk_A);

END ARCHITECTURE IMP;

⌨️ 快捷键说明

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