📄 ecp2_misc.vhd
字号:
IF ( last_clkb_valid1 = '0') THEN FOR i IN 0 TO (DATA_WIDTH_B - 1) LOOP dob_node(i) <= MEM((RADDR_B * DATA_WIDTH_B) + (RADDR_B / div_b) + i); if ( (wr_a_rd_b_coll = '1') and (((RADDR_B * DATA_WIDTH_B) + (RADDR_B / div_b) + i) >= dn_coll_addr) and (((RADDR_B * DATA_WIDTH_B) + (RADDR_B / div_b) + i) <= up_coll_addr) and ( (DATA_WIDTH_A < 18) or ( (DATA_WIDTH_A = 18) and ( ((bwa0_reg(0) = '1') and ((((RADDR_B * DATA_WIDTH_B) + (RADDR_B / div_b) + i) rem 18) < 9)) or ((bwa0_reg(1) = '1') and ((((RADDR_B * DATA_WIDTH_B) + (RADDR_B / div_b) + i) rem 18) >= 9)) ) ) or ( (DATA_WIDTH_A = 36) and ( ((bwa0_reg(0) = '1') and ((((RADDR_B * DATA_WIDTH_B) + (RADDR_B / div_b) + i) rem 36) < 9)) or ((bwa0_reg(1) = '1') and ((((RADDR_B * DATA_WIDTH_B) + (RADDR_B / div_b) + i) rem 36) >= 9) and ((((RADDR_B * DATA_WIDTH_B) + (RADDR_B / div_b) + i) rem 36) < 18)) or ((bwa1_reg(0) = '1') and ((((RADDR_B * DATA_WIDTH_B) + (RADDR_B / div_b) + i) rem 36) >= 18) and ((((RADDR_B * DATA_WIDTH_B) + (RADDR_B / div_b) + i) rem 36) < 27)) or ((bwa1_reg(1) = '1') and ((((RADDR_B * DATA_WIDTH_B) + (RADDR_B / div_b) + i) rem 36) >= 27)) ) ) ) ) then dob_node(i) <= 'X'; end if; END LOOP; END IF; ELSIF (renb_reg = '0') THEN IF (WRITEMODE_B = "WRITETHROUGH") THEN FOR i IN 0 TO (DATA_WIDTH_B - 1) LOOP dob_node(i) <= MEM((RADDR_B * DATA_WIDTH_B) + (RADDR_B / div_b) + i); END LOOP; ELSIF (WRITEMODE_B = "READBEFOREWRITE") THEN IF ( last_clkb_valid1 = '0') THEN dob_node <= dob_node_rbr; END IF; END IF; END IF; END IF; END IF; END PROCESS; P10 : PROCESS(g_reset, rsta_ipd, rstb_ipd, clka_ipd, clkb_ipd) BEGIN IF (g_reset = '0') THEN doa_reg <= (others => '0'); ELSIF (RESETMODE = "ASYNC") THEN IF (rsta_ipd = '1') THEN doa_reg <= (others => '0'); ELSIF (clka_ipd'event and clka_ipd = '1') THEN IF (cea_ipd = '1') THEN doa_reg <= doa_node; END IF; END IF; ELSIF (RESETMODE = "SYNC") THEN IF (clka_ipd'event and clka_ipd = '1') THEN IF (cea_ipd = '1') THEN IF (rsta_ipd = '1') THEN doa_reg <= (others => '0'); ELSIF (rsta_ipd = '0') THEN doa_reg <= doa_node; END IF; END IF; END IF; END IF; IF (g_reset = '0') THEN dob_reg <= (others => '0'); doab_reg <= (others => '0'); ELSIF (RESETMODE = "ASYNC") THEN IF (rstb_ipd = '1') THEN dob_reg <= (others => '0'); doab_reg <= (others => '0'); ELSIF (clkb_ipd'event and clkb_ipd = '1') THEN IF (ceb_ipd = '1') THEN dob_reg <= dob_node; doab_reg <= doa_node; END IF; END IF; ELSIF (RESETMODE = "SYNC") THEN IF (clkb_ipd'event and clkb_ipd = '1') THEN IF (ceb_ipd = '1') THEN IF (rstb_ipd = '1') THEN dob_reg <= (others => '0'); doab_reg <= (others => '0'); ELSIF (rstb_ipd = '0') THEN dob_reg <= dob_node; doab_reg <= doa_node; END IF; END IF; END IF; END IF; END PROCESS; P11 : PROCESS(doa_node, dob_node, doa_reg, dob_reg, doab_reg) BEGIN IF (REGMODE_A = "OUTREG") THEN IF (DATA_WIDTH_B = 36) THEN doa_int <= doab_reg; ELSE doa_int <= doa_reg; END IF; ELSE doa_int <= doa_node; END IF; IF (REGMODE_B = "OUTREG") THEN dob_int <= dob_reg; ELSE dob_int <= dob_node; END IF; END PROCESS; (doa17, doa16, doa15, doa14, doa13, doa12, doa11, doa10, doa9, doa8, doa7, doa6, doa5, doa4, doa3, doa2, doa1, doa0) <= doa_int; (dob17, dob16, dob15, dob14, dob13, dob12, dob11, dob10, dob9, dob8, dob7, dob6, dob5, dob4, dob3, dob2, dob1, dob0) <= dob_int;END V;-------cell sp16kb------library ieee;use ieee.std_logic_1164.all;use ieee.vital_timing.all;use ieee.vital_primitives.all;use ieee.std_logic_unsigned.all;use work.global.gsrnet;use work.global.purnet;use work.mem3.all;-- entity declaration --ENTITY sp16kb IS GENERIC ( DATA_WIDTH : Integer := 18; REGMODE : String := "NOREG"; RESETMODE : String := "SYNC"; CSDECODE : std_logic_vector(2 downto 0) := "000"; WRITEMODE : String := "NORMAL"; GSR : String := "DISABLED"; initval_00 : String := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; initval_01 : String := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; initval_02 : String := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; initval_03 : String := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; initval_04 : String := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; initval_05 : String := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; initval_06 : String := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; initval_07 : String := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; initval_08 : String := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; initval_09 : String := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; initval_0a : String := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; initval_0b : String := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; initval_0c : String := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; initval_0d : String := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; initval_0e : String := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; initval_0f : String := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; initval_10 : String := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; initval_11 : String := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; initval_12 : String := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; initval_13 : String := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; initval_14 : String := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; initval_15 : String := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; initval_16 : String := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; initval_17 : String := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; initval_18 : String := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; initval_19 : String := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; initval_1a : String := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; initval_1b : String := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; initval_1c : String := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; initval_1d : String := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; initval_1e : String := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; initval_1f : String := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; initval_20 : String := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; initval_21 : String := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; initval_22 : String := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; initval_23 : String := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; initval_24 : String := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; initval_25 : String := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; initval_26 : String := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; initval_27 : String := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; initval_28 : String := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; initval_29 : String := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; initval_2a : String := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; initval_2b : String := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; initval_2c : String := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; initval_2d : String := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; initval_2e : String := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; initval_2f : String := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; initval_30 : String := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; initval_31 : String := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; initval_32 : String := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; initval_33 : String := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; initval_34 : String := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; initval_35 : String := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; initval_36 : String := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; initval_37 : String := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; initval_38 : String := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; initval_39 : String := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; initval_3a : String := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; initval_3b : String := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; initval_3c : String := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; initval_3d : String := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; initval_3e : String := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; initval_3f : String := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"); PORT( di0, di1, di2, di3, di4, di5, di6, di7, di8 : in std_logic := 'X'; di9, di10, di11, di12, di13, di14, di15, di16, di17 : in std_logic := 'X'; ad0, ad1, ad2, ad3, ad4, ad5, ad6, ad7, ad8 : in std_logic := 'X'; ad9, ad10, ad11, ad12, ad13 : in std_logic := 'X'; ce, clk, we, cs0, cs1, cs2, rst : in std_logic := 'X'; do0, do1, do2, do3, do4, do5, do6, do7, do8 : out std_logic := 'X'; do9, do10, do11, do12, do13, do14, do15, do16, do17 : out std_logic := 'X' ); ATTRIBUTE Vital_Level0 OF sp16kb : ENTITY IS TRUE;END sp16kb ;architecture V of sp16kb issignal lo: std_logic := '0';signal hi: std_logic := '1';component dp16kbGENERIC( DATA_WIDTH_A : in Integer; DATA_WIDTH_B : in Integer; REGMODE_A : in String; REGMODE_B : in String; RESETMODE : in String; CSDECODE_A : in std_logic_vector(2 downto 0); CSDECODE_B : in std_logic_vector(2 downto 0); WRITEMODE_A : in String; WRITEMODE_B : in String; GSR : in String; initval_00 : in string; initval_01 : in string; initval_02 : in string; initval_03 : in string; initval_04 : in string; initval_05 : in string; initval_06 : in string; initval_07 : in string; initval_08 : in string; initval_09 : in string; initval_0a : in string; initval_0b : in string; initval_0c : in string; initval_0d : in string; initval_0e : in string; initval_0f : in string; initval_10 : in string; initval_11 : in string; initval_12 : in string; initval_13 : in string; initval_14 : in string; initval_15 : in string; initval_16 : in string; initval_17 : in string; initval_18 : in string; initval_19 : in string; initval_1a : in string; initval_1b : in string; initval_1c : in string; initval_1d : in string;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -