Verilog 中的案例陈述?
Posted
技术标签:
【中文标题】Verilog 中的案例陈述?【英文标题】:Case statements in Verilog? 【发布时间】:2015-01-24 02:53:03 【问题描述】:假设我有一个名为“myReg”的 8 位输出 reg 和一个名为“checkReg”的 8 位输入。我可以在 case 语句中使用十六进制值检查和分配它们的值吗?
例如(假设代码在一个 always 块中)
case (checkReg)
2'hA0:myReg <= 2'h10;
2'hB0:myReg <= 2'hC0;
//Other cases
endcase
我希望上面的代码执行以下操作:如果 checkReg = 10100000,则将 myReg 设置为 00010000。如果 checkReg = 10110000,则将 myReg 设置为 11000000。
我不确定是否可以检查并将十六进制值分配给向量并自动将其转换为二进制。
【问题讨论】:
所有数据都是二进制的。它存储在只能以二进制方式工作的计算机上。十六进制、十进制、八进制,甚至带符号的十进制都是查看二进制数据的方式。定点和浮点是二进制数据的解释。4'h5
是 4'b0101
。
【参考方案1】:
对于直接基础转换(bin、oct、hex、dec),您不需要在 verilog 中进行任何特殊转换。 BCD 转换之类的事情确实需要额外的步骤。
单引号前的数字是位大小,而不是位数。 2'hA0
应该是8'hA0
,否则高位值将被屏蔽。
reg [7:0] myReg;
always @* begin
case (checkReg)
8'hA0: myReg = 8'h10;
8'hB0: myReg = 8'hC0;
//Other cases
endcase
end
【讨论】:
以上是关于Verilog 中的案例陈述?的主要内容,如果未能解决你的问题,请参考以下文章
FPGA教程案例45图像案例5——基于FPGA的图像均值滤波verilog实现,通过MATLAB进行辅助验证
FPGA教程案例40通信案例10——基于FPGA的简易OFDM系统verilog实现
FPGA教程案例51控制案例3——基于FPGA的PWM波形产生verilog实现