Z
zorro_now
Guest
您好有!
我尝试写了一寄存器文件Verilog代码
, 也是一个测试平台
, 但我
运行模拟
, 让我在试验台的错误:
吕机关,包,RW,WriteEnable和BusW不能阿内。
任何一个可以帮助我吗?
这是代码
模块reg_file(时钟时,RST,机关,包,RW,WriteEnable,BusW,布萨BusB);
输入时钟时,RST;
输入[4:0]机关,包,RW;
输入WriteEnable;
输入[31:0] BusW;
输出[31:0]布萨BusB;
电线[31:0] ×,z表示;
/ /解码器得到的I / P为选民登记册
分配
ž [0] =(〜RW [4]&〜RW [3]&〜RW [2]&〜RW [1]&〜RW [0]),
ž [1] =(〜RW [4]&〜RW [3]&〜RW [2]&〜RW [1]&RW [0]),
ž [2] =(〜RW [4]&〜RW [3]&〜RW [2]&RW [1]&〜RW [0]),
ž [3] =(〜RW [4]&〜RW [3]&〜RW [2]&RW [1]&RW [0]),
ž [4] =(〜RW [4]&〜RW [3]&RW [2]&〜RW [1]&〜RW [0]),
ž [5] =(〜RW [4]&〜RW [3]&RW [2]&〜RW [1]&RW [0]),
ž [6] =(〜RW [4]&〜RW [3]&RW [2]&RW [1]&〜RW [0]),
ž [7] =(〜RW [4]&〜RW [3]&RW [2]&RW [1]&RW [0]),
ž [8] =(〜RW [4]&RW [3]&〜RW [2]&〜RW [1]&〜RW [0]),
ž [9] =(〜RW [4]&RW [3]&〜RW [2]&〜RW [1]&RW [0]),
ž [10] =(〜RW [4]&RW [3]&〜RW [2]&RW [1]&〜RW [0]),
ž [11] =(〜RW [4]&RW [3]&〜RW [2]&RW [1]&RW [0]),
ž [12] =(〜RW [4]&RW [3]&RW [2]&〜RW [1]&〜RW [0]),
ž [13] =(〜RW [4]&RW [3]&RW [2]&〜RW [1]&RW [0]),
ž [14] =(〜RW [4]&RW [3]&RW [2]&RW [1]&〜RW [0]),
ž [15] =(〜RW [4]&RW [3]&RW [2]&RW [1]&RW [0]),
ž [16] =(RW [4]&〜RW [3]&〜RW [2]&〜RW [1]&〜RW [0]),
ž [17] =(RW [4]&〜RW [3]&〜RW [2]&〜RW [1]&RW [0]),
ž [18] =(RW [4]&〜RW [3]&〜RW [2]&RW [1]&〜RW [0]),
ž [19] =(RW [4]&〜RW [3]&〜RW [2]&RW [1]&RW [0]),
ž [20] =(RW [4]&〜RW [3]&RW [2]&〜RW [1]&〜RW [0]),
ž [21] =(RW [4]&〜RW [3]&RW [2]&〜RW [1]&RW [0]),
ž [22] =(RW [4]&〜RW [3]&RW [2]&RW [1]&〜RW [0]),
ž [23] =(RW [4]&〜RW [3]&RW [2]&RW [1]&RW [0]),
ž [24] =(RW [4]&RW [3]&〜RW [2]&〜RW [1]&〜RW [0]),
ž [25] =(RW [4]&RW [3]&〜RW [2]&〜RW [1]&RW [0]),
ž [26] =(RW [4]&RW [3]&〜RW [2]&RW [1]&〜RW [0]),
ž [27] =(RW [4]&RW [3]&〜RW [2]&RW [1]&RW [0]),
ž [28] =(RW [4]&RW [3]&RW [2]&〜RW [1]&〜RW [0]),
ž [29] =(RW [4]&RW [3]&RW [2]&〜RW [1]&RW [0]),
ž [30] =(RW [4]&RW [3]&RW [2]&RW [1]&〜RW [0]),
ž [31] =(RW [4]&RW [3]&RW [2]&RW [1]&RW [0]);
分配x = WriteEnable与智;
总是@(posedge时钟)
开始
如果(rst)
ý = 0;
否则如果(X)
y二BusW;
末端
复用器MUX1的(Y,布萨,RA)的;
复用器MUX2的(Y,BusB,经常预算);
endmodule
/ *注册
模块beh_register(时钟时,RST坐标,十,BusW);
输入时钟时,RST;
输入[31:0] ×,BusW;
输出[31:0] ý;
第[31:0] ý;
总是@(posedge时钟)
开始
如果(rst)
ý = 0;
否则如果(X)
y二BusW;
末端
endmodule * /
/ /复用器
模块复用(铟,输出,选择);
输入[31:0]磷化铟;
输入[4:0]选择;
输出输出;
第输出;
总是@(INP或选择)
案(选择)
5'b00000:输出=铟[0];
5'b00001:输出=铟[1];
5'b00010:输出=铟[2];
5'b00011:输出=铟[3];
5'b00100:输出=铟[4];
5'b00101:输出=铟[5];
5'b00110:输出=铟[6];
5'b00111:输出=铟[7];
5'b01000:输出=铟[8];
5'b01001:输出=铟[9];
5'b01010:输出=铟[10];
5'b01011:输出=铟[11];
5'b01100:输出=铟[12];
5'b01101:输出=铟[13];
5'b01110:输出=铟[14];
5'b01111:输出=铟[15];
5'b10000:输出=铟[16];
5'b10001:输出=铟[17];
5'b10010:输出=铟[18];
5'b10011:输出=铟[19];
5'b10100:输出=铟[20];
5'b10101:输出=铟[21];
5'b10110:输出=铟[22];
5'b10111:输出=铟[23];
5'b11000:输出=铟[24];
5'b11001:输出=铟[25];
5'b11010:输出=铟[26];
5'b11011:输出=铟[27];
5'b11100:输出=铟[28];
5'b11101:输出=铟[29];
5'b11110:输出=铟[30];
5'b11111:输出=铟[31];
endcase
endmodule
模块reg_testbench;
第[31:0]布萨BusB;
丝时钟时,RST;
线材[4:0]机关,包,RW;
丝WriteEnable;
电线[31:0] BusW;
reg_file stmcrct(时钟时,RST,机关,包,RW,WriteEnable,BusW,布萨BusB);
初步
开始
BusW = 32'b00000000000000000000111111111111;
WriteEnable = 1'b1;
RW = 5'b00000;
#10
BusW = 32'b00011000000111000000111111111111;
WriteEnable = 1'b1;
RW = 5'b00001;
#10
WriteEnable = 1'b0;
机关= 5'b00000;
包= 5'b00001;
末端
初步
$显示器(“BusW =%B级\ nBusA =%B级\ nBusB =%B级\ N”的,BusW,布萨BusB);
endmodule
我尝试写了一寄存器文件Verilog代码
, 也是一个测试平台
, 但我
运行模拟
, 让我在试验台的错误:
吕机关,包,RW,WriteEnable和BusW不能阿内。
任何一个可以帮助我吗?
这是代码
模块reg_file(时钟时,RST,机关,包,RW,WriteEnable,BusW,布萨BusB);
输入时钟时,RST;
输入[4:0]机关,包,RW;
输入WriteEnable;
输入[31:0] BusW;
输出[31:0]布萨BusB;
电线[31:0] ×,z表示;
/ /解码器得到的I / P为选民登记册
分配
ž [0] =(〜RW [4]&〜RW [3]&〜RW [2]&〜RW [1]&〜RW [0]),
ž [1] =(〜RW [4]&〜RW [3]&〜RW [2]&〜RW [1]&RW [0]),
ž [2] =(〜RW [4]&〜RW [3]&〜RW [2]&RW [1]&〜RW [0]),
ž [3] =(〜RW [4]&〜RW [3]&〜RW [2]&RW [1]&RW [0]),
ž [4] =(〜RW [4]&〜RW [3]&RW [2]&〜RW [1]&〜RW [0]),
ž [5] =(〜RW [4]&〜RW [3]&RW [2]&〜RW [1]&RW [0]),
ž [6] =(〜RW [4]&〜RW [3]&RW [2]&RW [1]&〜RW [0]),
ž [7] =(〜RW [4]&〜RW [3]&RW [2]&RW [1]&RW [0]),
ž [8] =(〜RW [4]&RW [3]&〜RW [2]&〜RW [1]&〜RW [0]),
ž [9] =(〜RW [4]&RW [3]&〜RW [2]&〜RW [1]&RW [0]),
ž [10] =(〜RW [4]&RW [3]&〜RW [2]&RW [1]&〜RW [0]),
ž [11] =(〜RW [4]&RW [3]&〜RW [2]&RW [1]&RW [0]),
ž [12] =(〜RW [4]&RW [3]&RW [2]&〜RW [1]&〜RW [0]),
ž [13] =(〜RW [4]&RW [3]&RW [2]&〜RW [1]&RW [0]),
ž [14] =(〜RW [4]&RW [3]&RW [2]&RW [1]&〜RW [0]),
ž [15] =(〜RW [4]&RW [3]&RW [2]&RW [1]&RW [0]),
ž [16] =(RW [4]&〜RW [3]&〜RW [2]&〜RW [1]&〜RW [0]),
ž [17] =(RW [4]&〜RW [3]&〜RW [2]&〜RW [1]&RW [0]),
ž [18] =(RW [4]&〜RW [3]&〜RW [2]&RW [1]&〜RW [0]),
ž [19] =(RW [4]&〜RW [3]&〜RW [2]&RW [1]&RW [0]),
ž [20] =(RW [4]&〜RW [3]&RW [2]&〜RW [1]&〜RW [0]),
ž [21] =(RW [4]&〜RW [3]&RW [2]&〜RW [1]&RW [0]),
ž [22] =(RW [4]&〜RW [3]&RW [2]&RW [1]&〜RW [0]),
ž [23] =(RW [4]&〜RW [3]&RW [2]&RW [1]&RW [0]),
ž [24] =(RW [4]&RW [3]&〜RW [2]&〜RW [1]&〜RW [0]),
ž [25] =(RW [4]&RW [3]&〜RW [2]&〜RW [1]&RW [0]),
ž [26] =(RW [4]&RW [3]&〜RW [2]&RW [1]&〜RW [0]),
ž [27] =(RW [4]&RW [3]&〜RW [2]&RW [1]&RW [0]),
ž [28] =(RW [4]&RW [3]&RW [2]&〜RW [1]&〜RW [0]),
ž [29] =(RW [4]&RW [3]&RW [2]&〜RW [1]&RW [0]),
ž [30] =(RW [4]&RW [3]&RW [2]&RW [1]&〜RW [0]),
ž [31] =(RW [4]&RW [3]&RW [2]&RW [1]&RW [0]);
分配x = WriteEnable与智;
总是@(posedge时钟)
开始
如果(rst)
ý = 0;
否则如果(X)
y二BusW;
末端
复用器MUX1的(Y,布萨,RA)的;
复用器MUX2的(Y,BusB,经常预算);
endmodule
/ *注册
模块beh_register(时钟时,RST坐标,十,BusW);
输入时钟时,RST;
输入[31:0] ×,BusW;
输出[31:0] ý;
第[31:0] ý;
总是@(posedge时钟)
开始
如果(rst)
ý = 0;
否则如果(X)
y二BusW;
末端
endmodule * /
/ /复用器
模块复用(铟,输出,选择);
输入[31:0]磷化铟;
输入[4:0]选择;
输出输出;
第输出;
总是@(INP或选择)
案(选择)
5'b00000:输出=铟[0];
5'b00001:输出=铟[1];
5'b00010:输出=铟[2];
5'b00011:输出=铟[3];
5'b00100:输出=铟[4];
5'b00101:输出=铟[5];
5'b00110:输出=铟[6];
5'b00111:输出=铟[7];
5'b01000:输出=铟[8];
5'b01001:输出=铟[9];
5'b01010:输出=铟[10];
5'b01011:输出=铟[11];
5'b01100:输出=铟[12];
5'b01101:输出=铟[13];
5'b01110:输出=铟[14];
5'b01111:输出=铟[15];
5'b10000:输出=铟[16];
5'b10001:输出=铟[17];
5'b10010:输出=铟[18];
5'b10011:输出=铟[19];
5'b10100:输出=铟[20];
5'b10101:输出=铟[21];
5'b10110:输出=铟[22];
5'b10111:输出=铟[23];
5'b11000:输出=铟[24];
5'b11001:输出=铟[25];
5'b11010:输出=铟[26];
5'b11011:输出=铟[27];
5'b11100:输出=铟[28];
5'b11101:输出=铟[29];
5'b11110:输出=铟[30];
5'b11111:输出=铟[31];
endcase
endmodule
模块reg_testbench;
第[31:0]布萨BusB;
丝时钟时,RST;
线材[4:0]机关,包,RW;
丝WriteEnable;
电线[31:0] BusW;
reg_file stmcrct(时钟时,RST,机关,包,RW,WriteEnable,BusW,布萨BusB);
初步
开始
BusW = 32'b00000000000000000000111111111111;
WriteEnable = 1'b1;
RW = 5'b00000;
#10
BusW = 32'b00011000000111000000111111111111;
WriteEnable = 1'b1;
RW = 5'b00001;
#10
WriteEnable = 1'b0;
机关= 5'b00000;
包= 5'b00001;
末端
初步
$显示器(“BusW =%B级\ nBusA =%B级\ nBusB =%B级\ N”的,BusW,布萨BusB);
endmodule