verilog - HDL 计数器和标志编码风格
问题描述
在 Verilog/VHDL 中,假设我有一个 4 位计数器,以及一个在计数器等于 4 到 8 时应该置位的标志。有两种方法可以实现这一点
if((cntr>=4)&&(cntr<8))
flag <=1;
else
flag <= 0;
或者,我可以这样做
if(cntr==4)
flag<=1;
else if (cntr==8)
flag<=0;
在我看来,在功能上,它们做同样的事情。
有什么理由比另一个更好吗?风格明智?综合/实现怎么样?
解决方案
在这两个示例中,flag
都将被合成为触发器。这是因为(我假设)您是从时钟始终块内驱动它的,即您的两个示例是:
always @(posedge clk)
if ((cntr>=4)&&(cntr<8))
flag <= 1;
else
flag <= 0;
和
always @(posedge clk)
if (cntr==4)
flag <= 1;
else if (cntr==8)
flag <= 0;
这两个示例都是简单的(2 态)FSM。他们之间几乎没有选择。两者都将由触发器 ( flag
) 实现,其 D 输入由少量组合逻辑驱动。唯一的区别是,第二个示例的组合逻辑可能比第一个示例小,因为实现==
通常需要的面积比实现<
or少>
。
推荐阅读
- python - Python flask google-app-engine 文件上传在预览中工作,但在生产中失败 FileNotFoundError:[Errno 2] 没有这样的文件或目录:
- html - 在具有另一个背景图像问题的容器内使用背景图像缩放三个 div
- sql - 索引一个大表以在每列中查找不同的值
- sql - 如何将 CLOB 数据类型转换为 VARCHAR?或者只是为了最小化 CLOB 内容,因为我遇到了 JAVA 堆错误
- powershell - 根据文件中的文本拆分文本文件
- python - 在 Spark 数据框中合并日期范围
- django - 使用 Django 社交身份验证出错
- python-3.x - 通过从文本文件中提取表格并使用 python 生成 html 文件,将文本文件转换为 html 文件
- onclicklistener - RecyclerView onClick没有触发
- amazon-web-services - Cognito 身份验证和单点登录