请问在if 条件判断语句中可以使用未知态 if(data_in!=4'bx)来进行判定吗
时间:10-02
整理:3721RD
点击:
- always @(posedge clk or posedge rst)
- begin
- if(rst)
- begin
- temp<=512'h0;
- des<=0;
- length<=64'h0;
- signal<=0;
- end
- else if(data_in!=4'bx)
- begin
- temp[0:508]<=temp[4:511];
- temp[508:511]<=data_in;
- length<=length+64'h1;
- end
我是用data_in传入数据,每个时钟上升沿传递4个比特,当data_in=4'bx时表示,已经到了数据的末尾。以此来进行条件判断
4'bx表示4位二进制不确定或未知,这种只在仿真时才有用,实际的电路中是没x未知这个状态的,二制进制,要么是0要么是1。
你是想实现一个
data_in => 511 .... 0 => data_out 这样的右移(512位)移位寄存器的功能(可以参考移位寄存器的功能和表示方法)。
首先要明确你的输入是什么,输出是什么,然后在考滤用什么方法去实现。这样你就知道该如何添加条件。
目前你的写法是不可取的。
建议参考一下别人是如何写的。
理解HDL的意义和实际电路,这样你才清楚那些是在仿真是有用,那些是在综合时有用。
你这样写就没有理解数字电路的实质。二楼说的也不对,实际电路中会出现X状态。但是这是要绝对避免的。出现这种状态意味你的电路出现了问题
不行.......
data_in!=4'bx的结果是1'bx,if(1'bx)的结果是不执行,所以你最后那段代码永远不会被执行。
