verilog要用到的if else太多怎么办
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了verilog要用到的if else太多怎么办相关的知识,希望对你有一定的参考价值。
参考技术A 1、用case语句2、为了时序考虑,寄存器打拍处理,也就是将组合逻辑分到几个时序逻辑里进行处理,减少if-else的嵌套层级
嵌入式一招规范Verilog的if...else语句
在做FPGA、CPLD时可以选择VHDL语言和Verilog语言,刚接触FPGA开发,VHDL和Verilog都简单的接触学习了一下。排除两者在功能实现、具体细节上的差异,作为经常使用C语言的人来说,Verilog语言在语法上显得更有亲和力。
Verilog支持if…else if…else…的判断语法结构,与C语言类似,且也支持判断语句嵌套,支持某判断分支下执行多条语句。虽然与C语言类似,但因为它没有大括号的说法,使得在书写较为复杂的逻辑时显得乱糟糟,看上去一头雾水。如在if…else if…else中再嵌套多层判断语句,且每个判断分支下存在多条语句。以C语言举一个例子,伪码如下:
if(condition1)
state1;
else if(condition2)
state2;
state3;
state4;
else
state5;
以上逻辑放在Verilog中该怎么规范书写以达到期望的逻辑呢?答案很简单——以begin替代C语言中的左括号 、以end替代右括号。只有这样规范书写,才会最大限度的避免“奇怪的”逻辑错误,防止低级错误的出现。以上代码换做Verilog作如下书写:
if(condition1)
begin
state1;
end
else if(condition2)
begin
state2;
state3;
state4;
end
else
begin
state5;
end
或者
if(condition1) begin
state1;
end
else if(condition2) begin
state2;
state3;
state4;
end
else begin
state5;
end
一个好的习惯就是在写完if、else if、else后马上在后边加上begin和end,然后再在begin、end之中进行后续语句的填充。道理同C语言的写完if、else if、else马上打大括号一样。
以上是关于verilog要用到的if else太多怎么办的主要内容,如果未能解决你的问题,请参考以下文章
verilog中if else中能套if else吗,有啥错误啊,为啥??? case中能套if else吗 case中能套case吗
if else太多怎么代替,太难维护?可以使用spring-plugin 插件系统
verilog中if else中能套if else吗,有啥错误啊,为啥??? case中能套if else吗 case中能套case吗