📄 blockram.v
字号:
`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 + -