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

📄 blockram.v

📁 xilinx BlockRAM 级联
💻 V
📖 第 1 页 / 共 3 页
字号:

`timescale 1ns/100ps

module Tx_Traf_RAM(
                 //Port A 16-bit datawidth; 15-bit addrwidth 
					  DOA,
					  DOPA,
					  ADDRA,
					  CLKA,
					  DIA,
					  DIPA,					  
					  SSRA,
					  WEA,
					  ENA,
					  //Port B 32-bit datawidth; 14-bit addrwidth 
					  DOB,
					  DOPB,
					  ADDRB,
					  CLKB,
					  DIB,
					  DIPB,					  
					  SSRB,
					  WEB,
					  ENB					
				     );

input CLKA;
input [14:0] ADDRA;
input [15:0] DIA;
input [1:0]  DIPA;
input SSRA;
input WEA;
input ENA;

output [15:0] DOA;
output [1:0] DOPA;

input CLKB;
input [13:0] ADDRB;
input [31:0] DIB;
input [3:0]  DIPB;
input SSRB;
input WEB;
input ENB;

output [31:0] DOB;
output [3:0] DOPB;

//**************************************************************

reg [15:0] DOA;
reg [1:0] DOPA;
reg [31:0] DOB;
reg [3:0] DOPB;

reg [4:0] ADDRA_en;
reg [4:0] ADDRB_en;

//***************************************************************

wire [15:0] DOA00,DOA01,DOA02,DOA03,DOA04,DOA05,DOA06,DOA07,DOA08,DOA09;
wire [15:0] DOA10,DOA11,DOA12,DOA13,DOA14,DOA15,DOA16,DOA17,DOA18,DOA19;
wire [15:0] DOA20,DOA21,DOA22,DOA23,DOA24,DOA25,DOA26;

wire [31:0] DOB00,DOB01,DOB02,DOB03,DOB04,DOB05,DOB06,DOB07,DOB08,DOB09;
wire [31:0] DOB10,DOB11,DOB12,DOB13,DOB14,DOB15,DOB16,DOB17,DOB18,DOB19;
wire [31:0] DOB20,DOB21,DOB22,DOB23,DOB24,DOB25,DOB26;

wire [1:0] DOPA00,DOPA01,DOPA02,DOPA03,DOPA04,DOPA05,DOPA06,DOPA07,DOPA08,DOPA09;
wire [1:0] DOPA10,DOPA11,DOPA12,DOPA13,DOPA14,DOPA15,DOPA16,DOPA17,DOPA18,DOPA19;
wire [1:0] DOPA20,DOPA21,DOPA22,DOPA23,DOPA24,DOPA25,DOPA26;

wire [3:0] DOPB00,DOPB01,DOPB02,DOPB03,DOPB04,DOPB05,DOPB06,DOPB07,DOPB08,DOPB09;
wire [3:0] DOPB10,DOPB11,DOPB12,DOPB13,DOPB14,DOPB15,DOPB16,DOPB17,DOPB18,DOPB19;
wire [3:0] DOPB20,DOPB21,DOPB22,DOPB23,DOPB24,DOPB25,DOPB26;

wire ENA00,ENA01,ENA02,ENA03,ENA04,ENA05,ENA06,ENA07,ENA08,ENA09;
wire ENA10,ENA11,ENA12,ENA13,ENA14,ENA15,ENA16,ENA17,ENA18,ENA19;
wire ENA20,ENA21,ENA22,ENA23,ENA24,ENA25,ENA26;

wire ENB00,ENB01,ENB02,ENB03,ENB04,ENB05,ENB06,ENB07,ENB08,ENB09;
wire ENB10,ENB11,ENB12,ENB13,ENB14,ENB15,ENB16,ENB17,ENB18,ENB19;
wire ENB20,ENB21,ENB22,ENB23,ENB24,ENB25,ENB26;


always @(posedge CLKA)
   ADDRA_en <= ADDRA[14:10];
   
assign		ENA00  = (ADDRA[14:10]==5'b00000) ? 1'b1 : 1'b0;
assign		ENA01  = (ADDRA[14:10]==5'b00001) ? 1'b1 : 1'b0;
assign		ENA02  = (ADDRA[14:10]==5'b00010) ? 1'b1 : 1'b0;
assign		ENA03  = (ADDRA[14:10]==5'b00011) ? 1'b1 : 1'b0;
assign		ENA04  = (ADDRA[14:10]==5'b00100) ? 1'b1 : 1'b0;
assign		ENA05  = (ADDRA[14:10]==5'b00101) ? 1'b1 : 1'b0;
assign		ENA06  = (ADDRA[14:10]==5'b00110) ? 1'b1 : 1'b0;
assign		ENA07  = (ADDRA[14:10]==5'b00111) ? 1'b1 : 1'b0;
assign		ENA08  = (ADDRA[14:10]==5'b01000) ? 1'b1 : 1'b0;
assign		ENA09  = (ADDRA[14:10]==5'b01001) ? 1'b1 : 1'b0;
assign		ENA10  = (ADDRA[14:10]==5'b01010) ? 1'b1 : 1'b0;
assign		ENA11  = (ADDRA[14:10]==5'b01011) ? 1'b1 : 1'b0;
assign		ENA12  = (ADDRA[14:10]==5'b01100) ? 1'b1 : 1'b0;
assign		ENA13  = (ADDRA[14:10]==5'b01101) ? 1'b1 : 1'b0;
assign		ENA14  = (ADDRA[14:10]==5'b01110) ? 1'b1 : 1'b0;
assign		ENA15  = (ADDRA[14:10]==5'b01111) ? 1'b1 : 1'b0;
assign		ENA16  = (ADDRA[14:10]==5'b10000) ? 1'b1 : 1'b0;
assign		ENA17  = (ADDRA[14:10]==5'b10001) ? 1'b1 : 1'b0;
assign		ENA18  = (ADDRA[14:10]==5'b10010) ? 1'b1 : 1'b0;
assign		ENA19  = (ADDRA[14:10]==5'b10011) ? 1'b1 : 1'b0;
assign		ENA20  = (ADDRA[14:10]==5'b10100) ? 1'b1 : 1'b0;
assign		ENA21  = (ADDRA[14:10]==5'b10101) ? 1'b1 : 1'b0;
assign		ENA22  = (ADDRA[14:10]==5'b10110) ? 1'b1 : 1'b0;
assign		ENA23  = (ADDRA[14:10]==5'b10111) ? 1'b1 : 1'b0;
assign		ENA24  = (ADDRA[14:10]==5'b11000) ? 1'b1 : 1'b0;
assign		ENA25  = (ADDRA[14:10]==5'b11001) ? 1'b1 : 1'b0;
assign		ENA26  = (ADDRA[14:10]==5'b11010) ? 1'b1 : 1'b0;

always @ (posedge CLKB)
   ADDRB_en <= ADDRB[13:9];
   
assign		ENB00  = (ADDRB[13:9]==5'b00000) ? 1'b1 : 1'b0;
assign		ENB01  = (ADDRB[13:9]==5'b00001) ? 1'b1 : 1'b0;
assign		ENB02  = (ADDRB[13:9]==5'b00010) ? 1'b1 : 1'b0;
assign		ENB03  = (ADDRB[13:9]==5'b00011) ? 1'b1 : 1'b0;
assign		ENB04  = (ADDRB[13:9]==5'b00100) ? 1'b1 : 1'b0;
assign		ENB05  = (ADDRB[13:9]==5'b00101) ? 1'b1 : 1'b0;
assign		ENB06  = (ADDRB[13:9]==5'b00110) ? 1'b1 : 1'b0;
assign		ENB07  = (ADDRB[13:9]==5'b00111) ? 1'b1 : 1'b0;
assign		ENB08  = (ADDRB[13:9]==5'b01000) ? 1'b1 : 1'b0;
assign		ENB09  = (ADDRB[13:9]==5'b01001) ? 1'b1 : 1'b0;
assign		ENB10  = (ADDRB[13:9]==5'b01010) ? 1'b1 : 1'b0;
assign		ENB11  = (ADDRB[13:9]==5'b01011) ? 1'b1 : 1'b0;
assign		ENB12  = (ADDRB[13:9]==5'b01100) ? 1'b1 : 1'b0;
assign		ENB13  = (ADDRB[13:9]==5'b01101) ? 1'b1 : 1'b0;
assign		ENB14  = (ADDRB[13:9]==5'b01110) ? 1'b1 : 1'b0;
assign		ENB15  = (ADDRB[13:9]==5'b01111) ? 1'b1 : 1'b0;
assign		ENB16  = (ADDRB[13:9]==5'b10000) ? 1'b1 : 1'b0;
assign		ENB17  = (ADDRB[13:9]==5'b10001) ? 1'b1 : 1'b0;
assign		ENB18  = (ADDRB[13:9]==5'b10010) ? 1'b1 : 1'b0;
assign		ENB19  = (ADDRB[13:9]==5'b10011) ? 1'b1 : 1'b0;
assign		ENB20  = (ADDRB[13:9]==5'b10100) ? 1'b1 : 1'b0;
assign		ENB21  = (ADDRB[13:9]==5'b10101) ? 1'b1 : 1'b0;
assign		ENB22  = (ADDRB[13:9]==5'b10110) ? 1'b1 : 1'b0;
assign		ENB23  = (ADDRB[13:9]==5'b10111) ? 1'b1 : 1'b0;
assign		ENB24  = (ADDRB[13:9]==5'b11000) ? 1'b1 : 1'b0;
assign		ENB25  = (ADDRB[13:9]==5'b11001) ? 1'b1 : 1'b0;
assign		ENB26  = (ADDRB[13:9]==5'b11010) ? 1'b1 : 1'b0;

always @(ADDRA_en or DOA00 or DOA01 or DOA02 or DOA03 or DOA04 or DOA05 
		 or DOA06 or DOA07 or DOA08 or DOA09 or DOA10 or DOA11 or DOA12 or DOA13
		 or DOA14 or DOA15 or DOA16 or DOA17 or DOA18 or DOA19 or DOA20 or DOA21
		 or DOA22 or DOA23 or DOA24 or DOA25 or DOA26)
		 
	case (ADDRA_en)
		5'b00000:  DOA = DOA00  ;
		5'b00001:  DOA = DOA01  ;
		5'b00010:  DOA = DOA02  ;
		5'b00011:  DOA = DOA03  ;
		5'b00100:  DOA = DOA04  ;
		5'b00101:  DOA = DOA05  ;
		5'b00110:  DOA = DOA06  ;
		5'b00111:  DOA = DOA07  ;
		5'b01000:  DOA = DOA08  ;
		5'b01001:  DOA = DOA09  ;
		5'b01010:  DOA = DOA10  ;
		5'b01011:  DOA = DOA11  ;
		5'b01100:  DOA = DOA12  ;
		5'b01101:  DOA = DOA13  ;
		5'b01110:  DOA = DOA14  ;
		5'b01111:  DOA = DOA15  ;
		5'b10000:  DOA = DOA16  ;
		5'b10001:  DOA = DOA17  ;
		5'b10010:  DOA = DOA18  ;
		5'b10011:  DOA = DOA19  ;
		5'b10100:  DOA = DOA20  ;
		5'b10101:  DOA = DOA21  ;
		5'b10110:  DOA = DOA22  ;
		5'b10111:  DOA = DOA23  ;
		5'b11000:  DOA = DOA24  ;
		5'b11001:  DOA = DOA25  ;
		5'b11010:  DOA = DOA26  ;
		default:  DOA = 16'h0000;
	endcase

always @(ADDRA_en or DOPA00 or DOPA01 or DOPA02 or DOPA03 or DOPA04 or DOPA05 
		 or DOPA06 or DOPA07 or DOPA08 or DOPA09 or DOPA10 or DOPA11 or DOPA12 or DOPA13
		 or DOPA14 or DOPA15 or DOPA16 or DOPA17 or DOPA18 or DOPA19 or DOPA20 or DOPA21
		 or DOPA22 or DOPA23 or DOPA24 or DOPA25 or DOPA26)
		 
	case (ADDRA_en)
		5'b00000:  DOPA = DOPA00  ;
		5'b00001:  DOPA = DOPA01  ;
		5'b00010:  DOPA = DOPA02  ;
		5'b00011:  DOPA = DOPA03  ;
		5'b00100:  DOPA = DOPA04  ;
		5'b00101:  DOPA = DOPA05  ;
		5'b00110:  DOPA = DOPA06  ;
		5'b00111:  DOPA = DOPA07  ;
		5'b01000:  DOPA = DOPA08  ;
		5'b01001:  DOPA = DOPA09  ;
		5'b01010:  DOPA = DOPA10  ;
		5'b01011:  DOPA = DOPA11  ;
		5'b01100:  DOPA = DOPA12  ;
		5'b01101:  DOPA = DOPA13  ;
		5'b01110:  DOPA = DOPA14  ;
		5'b01111:  DOPA = DOPA15  ;
		5'b10000:  DOPA = DOPA16  ;
		5'b10001:  DOPA = DOPA17  ;
		5'b10010:  DOPA = DOPA18  ;
		5'b10011:  DOPA = DOPA19  ;
		5'b10100:  DOPA = DOPA20  ;
		5'b10101:  DOPA = DOPA21  ;
		5'b10110:  DOPA = DOPA22  ;
		5'b10111:  DOPA = DOPA23  ;
		5'b11000:  DOPA = DOPA24  ;
		5'b11001:  DOPA = DOPA25  ;
		5'b11010:  DOPA = DOPA26  ;
		default:  DOPA = 2'b00;
	endcase

always @(ADDRB_en or DOB00 or DOB01 or DOB02 or DOB03 or DOB04 or DOB05 
		 or DOB06 or DOB07 or DOB08 or DOB09 or DOB10 or DOB11 or DOB12 or DOB13
		 or DOB14 or DOB15 or DOB16 or DOB17 or DOB18 or DOB19 or DOB20 or DOB21
		 or DOB22 or DOB23 or DOB24 or DOB25 or DOB26)
		 
	case (ADDRB_en)
		5'b00000:  DOB = DOB00  ;
		5'b00001:  DOB = DOB01  ;
		5'b00010:  DOB = DOB02  ;
		5'b00011:  DOB = DOB03  ;
		5'b00100:  DOB = DOB04  ;
		5'b00101:  DOB = DOB05  ;
		5'b00110:  DOB = DOB06  ;
		5'b00111:  DOB = DOB07  ;
		5'b01000:  DOB = DOB08  ;
		5'b01001:  DOB = DOB09  ;
		5'b01010:  DOB = DOB10  ;
		5'b01011:  DOB = DOB11  ;
		5'b01100:  DOB = DOB12  ;
		5'b01101:  DOB = DOB13  ;
		5'b01110:  DOB = DOB14  ;
		5'b01111:  DOB = DOB15  ;
		5'b10000:  DOB = DOB16  ;
		5'b10001:  DOB = DOB17  ;
		5'b10010:  DOB = DOB18  ;
		5'b10011:  DOB = DOB19  ;
		5'b10100:  DOB = DOB20  ;
		5'b10101:  DOB = DOB21  ;
		5'b10110:  DOB = DOB22  ;
		5'b10111:  DOB = DOB23  ;
		5'b11000:  DOB = DOB24  ;
		5'b11001:  DOB = DOB25  ;
		5'b11010:  DOB = DOB26  ;
		default:  DOB = 32'h00000000;
	endcase

always @(ADDRB_en or DOPB00 or DOPB01 or DOPB02 or DOPB03 or DOPB04 or DOPB05 
		 or DOPB06 or DOPB07 or DOPB08 or DOPB09 or DOPB10 or DOPB11 or DOPB12 or DOPB13
		 or DOPB14 or DOPB15 or DOPB16 or DOPB17 or DOPB18 or DOPB19 or DOPB20 or DOPB21
		 or DOPB22 or DOPB23 or DOPB24 or DOPB25 or DOPB26)
		 
	case (ADDRB_en)
		5'b00000:  DOPB = DOPB00  ;
		5'b00001:  DOPB = DOPB01  ;
		5'b00010:  DOPB = DOPB02  ;
		5'b00011:  DOPB = DOPB03  ;
		5'b00100:  DOPB = DOPB04  ;
		5'b00101:  DOPB = DOPB05  ;
		5'b00110:  DOPB = DOPB06  ;
		5'b00111:  DOPB = DOPB07  ;
		5'b01000:  DOPB = DOPB08  ;
		5'b01001:  DOPB = DOPB09  ;
		5'b01010:  DOPB = DOPB10  ;
		5'b01011:  DOPB = DOPB11  ;
		5'b01100:  DOPB = DOPB12  ;
		5'b01101:  DOPB = DOPB13  ;
		5'b01110:  DOPB = DOPB14  ;
		5'b01111:  DOPB = DOPB15  ;
		5'b10000:  DOPB = DOPB16  ;
		5'b10001:  DOPB = DOPB17  ;

⌨️ 快捷键说明

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