微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 求助: 如何使x时输出0?

求助: 如何使x时输出0?

时间:10-02 整理:3721RD 点击:
求助各位大侠,
16位reg型变量a,b;
reg [15:0] a;
reg [15:0] b;
verilog代码, 如何通过简单 “位操作” 实现下面功能?
a[n]     b[n]
0          0
1           1
x           0

对于a的每一位,当为0时, b的相应位输出0;
                    当为1时,                  输出1;
                     当为x时,                 输出0。

由于
x | 0   = x
x&1   = x
简单的位操作  看来无法实现,  大家有什么其他办法?

?
a的0、1都指定了,x状态如何理解呢?

可以采用条件判断,当a[n]=1时,b[n]=1,否则b[n]=0。包括a为高阻态时,b也为0。
代码自己写。

你可以试试下面的写法
if (a[n] === 1'b1)
          b[n]=1'b1;
else
          b[n]=1'b0;

中国电子顶级开发网 » ASIC/FPGA/CPLD 设计(数字前端) » 资料共享 » AT89C52中文资料 » 发表回复中国电子顶级开发网 » ASIC/FPGA/CPLD 设计(数字前端) » 资料共享 » AT89C52中文资料 » 发表回复

把x变成0...you probably canot synthesize this design...

直接指定为0就可以了.不过写出来和电路做出来还是有区别的,建议去看看管级电路的实现手段

why do you want this?
suggestions:
1) always @(*) begin
if(a[0] === 1'bx) begin
a[0] = 1'b0;
end else begin
  b[0] = a[0];
end
end
2) run simulations in 2 states then.

pull low

怎么样多赚信元啊?

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

网站地图

Top