微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 请问在if 条件判断语句中可以使用未知态 if(data_in!=4'bx)来进行判定吗

请问在if 条件判断语句中可以使用未知态 if(data_in!=4'bx)来进行判定吗

时间:10-02 整理:3721RD 点击:

  1. always @(posedge clk or posedge rst)
  2. begin
  3. if(rst)
  4.     begin
  5.         temp<=512'h0;
  6.         des<=0;
  7.          length<=64'h0;
  8.         signal<=0;
  9.     end
  10. else if(data_in!=4'bx)
  11.     begin
  12.     temp[0:508]<=temp[4:511];
  13.     temp[508:511]<=data_in;
  14.     length<=length+64'h1;
  15.     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)的结果是不执行,所以你最后那段代码永远不会被执行。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top