新人Verilog求教

weixin_39054969 2018-05-23 08:50:48
6、 格雷码数值判断电路:
编写一个Verilog模块,将输入数X的格雷码转换为二进制码,当输入数X满足4<X≤15时,输出Y=1,否则为0。


应该怎么实现呢?我的错误代码如下:
module graycodetobin(Gry,Bin,X,Y);
parameter length = X;
input [length-1:0] Gry;
output [1:0] Y;
input X;
output [length-1:0] Bin;
reg [length-1:0] Bin;
integer i;
always @ (Gry)
begin
Bin[length-1]=Gry[length-1];
for(i=length-2;i>=0;i=i-1)
Bin[i]=Bin[i+1]^Gry[i];
end
if (length>4 && length<=15)
Y=1;
else
Y=0;

endmodule
...全文
1099 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_39054969 2018-05-28
  • 打赏
  • 举报
回复
做出来了,结果如下 module gray( Gry, Bin, Y ); output reg [1:0] Y; parameter length = 4; input [length-1:0] Gry; output [length-1:0] Bin; reg [length-1:0] Bin; integer i; always @ (Gry) begin Bin[length-1]=Gry[length-1]; for(i=length-2;i>=0;i=i-1) Bin[i]=Bin[i+1]^Gry[i]; end //格雷码转换成二进制代码 always @ (Gry) begin if (Gry>4'b0100 && Gry<=4'b1111) Y<= 1; else Y<=0; end //格雷码数值判断 endmodule 仿真代码: module sim_gray( ); reg [3:0] Gry; wire [3:0] Bin; wire [1:0] Y; gray u1 ( Gry, Bin, Y ); initial Gry=0; //格雷码赋初值0 always #10 Gry=Gry+1;//每间隔10ns格雷码加一 endmodule
zgl7903 2018-05-23
  • 打赏
  • 举报
回复
最方便的 使用 case
  • 打赏
  • 举报
回复
尚未接触该部分

2,425

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 其他硬件开发
社区管理员
  • 其他硬件开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧