verilog 语言[N:0]和[0:N]定义变量方法、比较大小以及不定值x用于if语句中的处理
2018-08-09 15:04
477 查看
为了搞清楚verilog [N:0]和[0:N]两种定义变量的区别,以及测试代码对不定值x的处理(x是有时当作1处理,有时当作0处理,还是既不做0也不做1处理?)写了如下的测试代码
[code]
-
`alert('module HL_order;
-
reg [4:0] A;
-
reg [0:4] B;
-
reg [4:0] data;
-
reg C;
-
initial
-
begin
-
#10 A=5'b11101;
-
#10 B=5'b11101;
-
#10 data=11100;
-
#10 A<=data;//test assignment of MSB & LSB
-
#10 B<=data;//test assignment of MSB & LSB
-
//#10 A<=A+2'b01;//test compare value
-
#10 C=A>B?1:0;
-
#10 C=A==B?1:0;
-
#10 B=B+2'b01;
-
#10 B=B+2'b01;
-
#10 A[4:0]=B[0:4]; //test assignment of MSB & LSB
-
#10 A=5'b1110x;//text variable x
-
#10 if(A==5'b11101) A=5'b11111;
-
else if(A==5'b11100) A=5'b00000;
-
else if(A==5'b1110x) A=5'b11100;
-
#10 if(B==5'b11110) B<=5'b00000;
-
end
-
endmodule
')`
代码仿真结果如下图所示:
总结:1.A[4:0]和B[0:4]赋值时(例子中11100)得到的结果为:
A[4]=1,A[3]=1,A[2]=1,A[1]=0,A[0]=0 B[0]=1,B[1]=1,B[2]=1,B[3]=0,B[4]=0
2.此时比较大小得到A[4:0]=11100和B[0:4]=11100,比较大小得到A=B;(即A[4]和B[0]作为数据的最高位比较,次高位分别为A[3]和B[1])
3.不定值x在用于判断时不是当作不确定的或者0或者1处理,而是当作一个第三种情况(仿真结果显示x不能用于if语句中进行判断赋值)
4 A[4:0]<=B[4:0]这样赋值时提示出错信息:Bounds of part-select into 'B' are reversed.
阅读更多相关文章推荐
- verilog 语言[N:0]和[0:N]定义变量方法、比较大小以及不定值x用于if语句中的处理
- 定义一个宏,比较两个数a、b的大小,不能使用大于、小于、if语句 以及 不用 第三个数,交换 a,b的值
- 关于Java程序中类定义对象的处理,以及类中变量与方法的运行过程
- 定义一个宏,比较a和b的大小,不用大于,小于,if语句
- 请定义一个宏,比较两个数a、b的大小,不能使用大于、小于、if语句
- 请定义一个宏,比较两个数a、b的大小,不能使用大于、小于、if语句
- 请定义一个宏,比较两个数的a、b的大小,不能使用大于、小于、if语句
- 请定义一个宏,比较两个数的a、b的大小,不能使用大于、小于、if语句
- 请定义一个宏,比较两个数a、b的大小,不能使用大于、小于、if语句
- 定义一个宏,比较两个数a、b的大小,不能使用大于、小于、if语句
- 请定义一个宏,比较两个数a、b的大小,不能使用大于、小于、if语句
- 请定义一个宏,比较两个数的a、b的大小,不能使用大于、小于、if语句
- 详解keil采用C语言模块化编程时全局变量、结构体的定义、声明以及头文件包含的处理方法!
- 请定义一个宏,比较两个数a、b的大小,不能使用大于、小于、if语句
- 请定义一个宏,比较两个数a、b的大小,不能使用大于、小于、if语句
- 请定义一个宏,比较两个数的a、b的大小,不能使用大于、小于、if语句
- 请定义一个宏,比较两个数的a、b的大小,不能使用大于、小于、if语句
- 请定义一个宏,比较两个数a、b的大小,不能使用大于、小于、if语句
- 请定义一个宏,比较两个数a、b的大小,不能使用大于、小于、if语句。
- 请定义一个宏,比较两个数a、b的大小,不能使用大于、小于、if语句。