四选一的verilog代码
module Orion_mux4_1(input [3:0] a , input [1:0] sel , output reg y);
always @ (a , sel)
begin
case (sel)
2'b00 : y = a[0];
2'b01 : y = a[1];
2'b10 : y = a[2];
2'b11 : y = a[3];
default: y = 1'bx;
endcase
end
endmodule
相应测测试代码:
`timescale 1ns/100ps
module Orion_mux4_1_tb;
//module Orion_mux4_1(input [3:0] a , input [1:0] sel , output reg y);
reg [3:0] a;
reg [1:0] sel;
wire y;
Orion_mux4_1 DUT ( a(a) , sel(sel) , y(y));
initial
begin
sel = 0;
a = 4'b0101;
repeat (20)
#2 sel = sel + 1;
end
endmodule
波形图:
贴不上,自己仿真一下吧。
对于前仿真,如何保证设计的结果是正确的呢?1:首先利用MATLAB产生测试向量。matlab必须产生定点的二进制补码字符串,这样才可以将数据写入到外面的文件中供modelsim读取。所以这里要利用matlab的定点设计函数fix,以及几个转换函数,比如说,dec2num等等。matlab中好像没有将有符号数转化为补码的,在这里我们可以利用有符号数补码的计算方法来自行编写一个int2signm2:接下来就是将产生的定点测试向量(N位二进制补码,N为设计的滤波器的输入位宽),利用matlab的文件读取功能存放在外部txt文件中。modelsim中读取该文件的数据,存放在存储单元中,供仿真测试。3:下面就会得到modelsim中的仿真结果。前面提到过,滤波器的设计输出是M位有符号数,所以从modelsim输出端口中得到的是M位二进制0、1,modelsim中对内部变量的读写只单纯的读写二进制或者代表的无符号实数。所以现在再次利用matlab,将从modelsim中读出的无符号数转换为其实质的有符号数,转换方法还是遵循前面一篇中第2点提到的那个补码产生原理。4:接下来,我们就可以对比分析了。还要注意一点就是,modelsim或者ISE中式没有小数概念的。所以之前设计时对输入数据我们是将其扩大了2^f倍,其中f是小数位数。对系数也是进行同样的放大。
modelsim仿真错误解决办法
编译不成功可能是因为:
1、本身程序有问题。
2、没有设置顶层文件
3、modelsim 出现错误是不要只是看错误的地方,也要看前面的一部分
以上就是关于求4选1选择器用modelsim仿真波形图,测试代码啊全部的内容,包括:求4选1选择器用modelsim仿真波形图,测试代码啊、如何用MATLAB来验证modelsim中的仿真结果、modelsim 仿真问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)