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

📄 ecp2_misc.vhd

📁 porting scintilla to qt
💻 VHD
📖 第 1 页 / 共 5 页
字号:
           IF (bwa1_reg(0) = '1') THEN              FOR i IN 0 TO 8 LOOP                 MEM((WADDR_A * DATA_WIDTH_A) + i + 18) <= diab_reg(i + 18);              END LOOP;           END IF;           IF (bwa1_reg(1) = '1') THEN              FOR i IN 0 TO 8 LOOP                 MEM((WADDR_A * DATA_WIDTH_A) + i + 27) <= diab_reg(i + 27);              END LOOP;           END IF;        END IF;     ELSE        IF (DATA_WIDTH_A = 18) THEN           IF (wrena_reg = '1' and clka_valid = '1') THEN              FOR i IN 0 TO (DATA_WIDTH_A - 1) LOOP              doa_node_rbr(i) <= MEM((WADDR_A * DATA_WIDTH_A) + (WADDR_A / div_a) + i);              END LOOP;              IF (bwa0_reg(0) = '1') THEN                 FOR i IN 0 TO 8 LOOP                    MEM((WADDR_A * DATA_WIDTH_A) + i) <= dia_reg(i);						  if ( (wr_a_wr_b_coll = '1') and								 (((WADDR_A * DATA_WIDTH_A) + i) >= dn_coll_addr) and								 (((WADDR_A * DATA_WIDTH_A) + i) <= up_coll_addr) and								 ( (DATA_WIDTH_B < 18) or ((DATA_WIDTH_B = 18) and (bwb_reg(0) = '1')) ) ) then							  MEM((WADDR_A * DATA_WIDTH_A) + i) <= 'X';						  end if;                 END LOOP;              END IF;              IF (bwa0_reg(1) = '1') THEN                 FOR i IN 0 TO 8 LOOP                    MEM((WADDR_A * DATA_WIDTH_A) + i + 9) <= dia_reg(i + 9);						  if ( (wr_a_wr_b_coll = '1') and								 (((WADDR_A * DATA_WIDTH_A) + i + 9) >= dn_coll_addr) and 								 (((WADDR_A * DATA_WIDTH_A) + i + 9) <= up_coll_addr) and								 ( (DATA_WIDTH_B < 18) or ((DATA_WIDTH_B = 18) and (bwb_reg(1) = '1')) ) ) then							  MEM((WADDR_A * DATA_WIDTH_A) + i + 9) <= 'X';						  end if;                 END LOOP;              END IF;           END IF;        ELSIF (DATA_WIDTH_A = 9) THEN           IF (wrena_reg = '1' and clka_valid = '1') THEN              FOR i IN 0 TO (DATA_WIDTH_A - 1) LOOP              doa_node_rbr(i) <= MEM((WADDR_A * DATA_WIDTH_A) + (WADDR_A / div_a) + i);              END LOOP;              FOR i IN 0 TO (DATA_WIDTH_A - 1) LOOP                 MEM((WADDR_A * DATA_WIDTH_A) + i) <= dia_reg(i);					  if ( (wr_a_wr_b_coll = '1') and							 (((WADDR_A * DATA_WIDTH_A) + i) >= dn_coll_addr) and							 (((WADDR_A * DATA_WIDTH_A) + i) <= up_coll_addr) and							 ( (DATA_WIDTH_B < 18) or								( (DATA_WIDTH_B = 18) and								  ( ((bwb_reg(0) = '1') and (((WADDR_A * DATA_WIDTH_A) rem 18) = 0)) or								    ((bwb_reg(1) = '1') and (((WADDR_A * DATA_WIDTH_A) rem 18) = 9)) ) ) ) ) then						  MEM((WADDR_A * DATA_WIDTH_A) + i) <= 'X';					  end if;              END LOOP;           END IF;        ELSE           IF (wrena_reg = '1' and clka_valid = '1') THEN              FOR i IN 0 TO (DATA_WIDTH_A - 1) LOOP              doa_node_rbr(i) <= MEM((WADDR_A * DATA_WIDTH_A) + (WADDR_A / div_a) + i);              END LOOP;              FOR i IN 0 TO (DATA_WIDTH_A - 1) LOOP                 MEM((WADDR_A * DATA_WIDTH_A) + (WADDR_A / div_a) + i) <= dia_reg(i);					  if ( (wr_a_wr_b_coll = '1') and						    (((WADDR_A * DATA_WIDTH_A) + (WADDR_A / div_a) + i) >= dn_coll_addr) and						    (((WADDR_A * DATA_WIDTH_A) + (WADDR_A / div_a) + i) <= up_coll_addr) and							  ( (DATA_WIDTH_B < 18) or								 ( (DATA_WIDTH_B = 18) and								   ( ((bwb_reg(0) = '1') and ((((WADDR_A * DATA_WIDTH_A) + (WADDR_A / div_a)) rem 18) < 9)) or								     ((bwb_reg(1) = '1') and ((((WADDR_A * DATA_WIDTH_A) + (WADDR_A / div_a)) rem 18) >= 9))									) ) ) ) then						  MEM((WADDR_A * DATA_WIDTH_A) + (WADDR_A / div_a) + i) <= 'X';					  end if;              END LOOP;           END IF;        END IF;        IF (DATA_WIDTH_B = 18) THEN           IF (wrenb_reg = '1' and clkb_valid = '1') THEN              FOR i IN 0 TO (DATA_WIDTH_B - 1) LOOP              dob_node_rbr(i) <= MEM((WADDR_B * DATA_WIDTH_B) + (WADDR_B / div_b) + i);              END LOOP;              IF (bwb_reg(0) = '1') THEN                 FOR i IN 0 TO 8 LOOP                    MEM((WADDR_B * DATA_WIDTH_B) + i) <= dib_reg(i);						  if ( (wr_a_wr_b_coll = '1') and							    (((WADDR_B * DATA_WIDTH_B) + i) >= dn_coll_addr) and							    (((WADDR_B * DATA_WIDTH_B) + i) <= up_coll_addr) and								 ( (DATA_WIDTH_A < 18) or ((DATA_WIDTH_A = 18) and (bwa0_reg(0) = '1')) ) ) then							  MEM((WADDR_B * DATA_WIDTH_B) + i) <= 'X';						  end if;                 END LOOP;              END IF;              IF (bwb_reg(1) = '1') THEN                 FOR i IN 0 TO 8 LOOP                    MEM((WADDR_B * DATA_WIDTH_B) + i + 9) <= dib_reg(i + 9);						  if ( (wr_a_wr_b_coll = '1') and							    (((WADDR_B * DATA_WIDTH_B) + i + 9) >= dn_coll_addr) and							    (((WADDR_B * DATA_WIDTH_B) + i + 9) <= up_coll_addr) and								 ( (DATA_WIDTH_A < 18) or ((DATA_WIDTH_A = 18) and (bwa0_reg(1) = '1')) ) ) then							  MEM((WADDR_B * DATA_WIDTH_B) + i + 9) <= 'X';						  end if;                 END LOOP;              END IF;           END IF;        ELSIF (DATA_WIDTH_B = 9) THEN           IF (wrenb_reg = '1' and clkb_valid = '1') THEN              FOR i IN 0 TO (DATA_WIDTH_B - 1) LOOP              dob_node_rbr(i) <= MEM((WADDR_B * DATA_WIDTH_B) + (WADDR_B / div_b) + i);              END LOOP;              FOR i IN 0 TO (DATA_WIDTH_B - 1) LOOP                  MEM((WADDR_B * DATA_WIDTH_B) + i) <= dib_reg(i);						if ( (wr_a_wr_b_coll = '1') and							  (((WADDR_B * DATA_WIDTH_B) + i) >= dn_coll_addr) and							  (((WADDR_B * DATA_WIDTH_B) + i) <= up_coll_addr) and							  ( (DATA_WIDTH_A < 18) or								 ( (DATA_WIDTH_A = 18) and									( ((bwa0_reg(0) = '1') and (((WADDR_B * DATA_WIDTH_B) rem 18) = 0)) or									  ((bwa0_reg(1) = '1') and (((WADDR_B * DATA_WIDTH_B) rem 18) = 9)) ) ) ) ) then							MEM((WADDR_B * DATA_WIDTH_B) + i) <= 'X';						end if;              END LOOP;           END IF;        ELSE           IF (wrenb_reg = '1' and clkb_valid = '1') THEN              FOR i IN 0 TO (DATA_WIDTH_B - 1) LOOP              dob_node_rbr(i) <= MEM((WADDR_B * DATA_WIDTH_B) + (WADDR_B / div_b) + i);              END LOOP;              FOR i IN 0 TO (DATA_WIDTH_B - 1)  LOOP                  MEM((WADDR_B * DATA_WIDTH_B) + (WADDR_B / div_b) + i) <= dib_reg(i);						if ( (wr_a_wr_b_coll = '1') and							  (((WADDR_B * DATA_WIDTH_B) + (WADDR_B / div_b) + i) >= dn_coll_addr) and							  (((WADDR_B * DATA_WIDTH_B) + (WADDR_B / div_b) + i) <= up_coll_addr) and							  ( (DATA_WIDTH_A < 18) or								 ( (DATA_WIDTH_A = 18) and									( ((bwa0_reg(0) = '1') and ((((WADDR_B * DATA_WIDTH_B) + (WADDR_B / div_b)) rem 18) < 9)) or									  ((bwa0_reg(1) = '1') and ((((WADDR_B * DATA_WIDTH_B) + (WADDR_B / div_b)) rem 18) >= 9))									) ) ) ) then							MEM((WADDR_B * DATA_WIDTH_B) + (WADDR_B / div_b) + i) <= 'X';						end if;              END LOOP;           END IF;        END IF;     END IF;  END PROCESS;  P9 : PROCESS(ada_reg, rena_reg, adb_reg, renb_reg, MEM, clka_valid1, clkb_valid1, rsta_sig, rstb_sig,               doa_node_rbr, dob_node_rbr,					wr_a_rd_b_coll, rd_a_wr_b_coll)   VARIABLE RADDR_A_VALID : boolean := TRUE;  VARIABLE RADDR_B_VALID : boolean := TRUE;  VARIABLE RADDR_A : integer := 0;  VARIABLE RADDR_B : integer := 0;  VARIABLE dout_node_tr : std_logic_vector(35 downto 0);  VARIABLE dout_node_wt : std_logic_vector(35 downto 0);  BEGIN     RADDR_A_VALID := Valid_Address (ada_reg);     RADDR_B_VALID := Valid_Address (adb_reg);     IF (RADDR_A_VALID = TRUE) THEN        RADDR_A := conv_integer(ada_reg);     END IF;     IF (RADDR_B_VALID = TRUE) THEN        RADDR_B := conv_integer(adb_reg);     END IF;     IF (DATA_WIDTH_B = 36) THEN        IF (rstb_sig = '1') THEN           IF (RESETMODE = "SYNC") THEN              IF (clkb_ipd = '1') THEN                 doa_node <= (others => '0');                 dob_node <= (others => '0');              END IF;           ELSIF (RESETMODE = "ASYNC") THEN              doa_node <= (others => '0');              dob_node <= (others => '0');           END IF;        ELSIF (clkb_valid1'event and clkb_valid1 = '1') THEN           IF (renb_reg = '1') THEN              FOR i IN 0 TO (DATA_WIDTH_B - 1) LOOP                 dout_node_tr(i) := MEM((RADDR_B * DATA_WIDTH_B) + i);					  if ( (wr_a_rd_b_coll = '1') and							 (((RADDR_B * DATA_WIDTH_B) + i) >= dn_coll_addr) and							 (((RADDR_B * DATA_WIDTH_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) + i) rem 18) < 9)) or								    ((bwa0_reg(1) = '1') and ((((RADDR_B * DATA_WIDTH_B) + i) rem 18) >= 9)) ) ) or								( (DATA_WIDTH_A = 36) and								  ( ((bwa0_reg(0) = '1') and ((((RADDR_B * DATA_WIDTH_B) + i) rem 36) < 9)) or								    ((bwa0_reg(1) = '1') and ((((RADDR_B * DATA_WIDTH_B) + i) rem 36) >= 9)										                   and ((((RADDR_B * DATA_WIDTH_B) + i) rem 36) < 18)) or								    ((bwa1_reg(0) = '1') and ((((RADDR_B * DATA_WIDTH_B) + i) rem 36) >= 18)										                   and ((((RADDR_B * DATA_WIDTH_B) + i) rem 36) < 27)) or								    ((bwa1_reg(1) = '1') and ((((RADDR_B * DATA_WIDTH_B) + i) rem 36) >= 27)) ) )								 ) ) then						  dout_node_tr(i) := 'X';					  end if;              END LOOP;              doa_node <= dout_node_tr(17 downto 0);              dob_node <= dout_node_tr(35 downto 18);           ELSIF (renb_reg = '0') THEN              IF (WRITEMODE_B = "WRITETHROUGH") THEN                 FOR i IN 0 TO (DATA_WIDTH_B - 1) LOOP                    dout_node_wt(i) := MEM((RADDR_B * DATA_WIDTH_B) + i);                 END LOOP;                 doa_node <= dout_node_wt(17 downto 0);                 dob_node <= dout_node_wt(35 downto 18);              ELSIF (WRITEMODE_B = "READBEFOREWRITE") THEN                 doa_node <= doa_node_rbr;                 dob_node <= dob_node_rbr;              END IF;           END IF;        END IF;     ELSE        IF (rsta_sig = '1') THEN           IF (RESETMODE = "SYNC") THEN              IF (clka_ipd = '1') THEN                 doa_node <= (others => '0');              END IF;           ELSIF (RESETMODE = "ASYNC") THEN              doa_node <= (others => '0');           END IF;        ELSIF (clka_valid1 = '1') THEN           IF (rena_reg = '1') THEN              IF ( last_clka_valid1 = '0') THEN                 FOR i IN 0 TO (new_data_width_a - 1)  LOOP                    doa_node(i) <= MEM((RADDR_A * DATA_WIDTH_A) + (RADDR_A / div_a) + i);					  if ( (rd_a_wr_b_coll = '1') and							 (((RADDR_A * DATA_WIDTH_A) + (RADDR_A / div_a) + i) >= dn_coll_addr) and							 (((RADDR_A * DATA_WIDTH_A) + (RADDR_A / div_a) + i) <= up_coll_addr) and							 ( (DATA_WIDTH_B < 18) or								( (DATA_WIDTH_B = 18) and								  ( ((bwb_reg(0) = '1') and ((((RADDR_A * DATA_WIDTH_A) + (RADDR_A / div_a) + i) rem 18) < 9)) or									 ((bwb_reg(1) = '1') and ((((RADDR_A * DATA_WIDTH_A) + (RADDR_A / div_a) + i) rem 18) >= 9))								  ) ) ) ) then						  doa_node(i) <= 'X';					  end if;                 END LOOP;              END IF;           ELSIF (rena_reg = '0') THEN              IF (WRITEMODE_A = "WRITETHROUGH") THEN                 FOR i IN 0 TO (new_data_width_a - 1) LOOP                    doa_node(i) <= MEM((RADDR_A * DATA_WIDTH_A) + (RADDR_A / div_a) + i);                 END LOOP;              ELSIF (WRITEMODE_A = "READBEFOREWRITE") THEN                 IF ( last_clka_valid1 = '0') THEN                    doa_node <= doa_node_rbr;                 END IF;              END IF;           END IF;        END IF;        IF (rstb_sig = '1') THEN           IF (RESETMODE = "SYNC") THEN              IF (clkb_ipd = '1') THEN                 dob_node <= (others => '0');              END IF;           ELSIF (RESETMODE = "ASYNC") THEN              dob_node <= (others => '0');           END IF;        ELSIF (clkb_valid1 = '1') THEN           IF (renb_reg = '1') THEN

⌨️ 快捷键说明

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