always块中的REG型变量会被综合成什么结构
创作时间:
作者:
@小白创作中心
always块中的REG型变量会被综合成什么结构
引用
CSDN
1.
https://blog.csdn.net/qq_43433724/article/details/138185404
在Verilog HDL编程中,always块中的变量在声明时都必须为reg类型。但是,对于组合逻辑和时序逻辑,综合器会将二者综合成不同的结构。下面通过实际例子进行分析。
组合逻辑与时序逻辑的综合结果
考虑以下Verilog模块:
module full_add(
input clk,
input [3:0]a,
input [3:0]b,
output [7:0]c,
output [3:0] d
);
reg [3:0]a_temp;
reg [3:0]b_temp;
always@(*)
begin
a_temp=a;
end
assign c=a_temp;
always@(posedge clk)
begin
b_temp<=b;
end
assign d=b_temp;
endmodule
在这个模块中,a_temp
由组合逻辑产生,而b_temp
由时序逻辑产生。下面是它们的综合结果:
从综合结果可以看出:
a_temp
被综合为wire型。b_temp
被综合为触发器。
因此,即使在声明时都被声明为寄存器,但根据其是组合逻辑还是时序逻辑,最终的综合结果是不同的。
不完整赋值情况下的综合结果
再考虑以下情况:
module full_add(
input en,
input [3:0]a,
input [3:0]b,
output [3:0]c,
output [3:0]d
);
reg [3:0]a_temp;
reg [3:0]b_temp;
always@(*)
begin
if(en)
a_temp<=a;
end
assign c=a_temp;
always@(*)
begin
if(en)
b_temp<=b;
else
b_temp<=0;
end
assign d=b_temp;
endmodule
在这个模块中:
- 对于未完整赋值的情况(如
a_temp
),reg会被综合成锁存器。 - 对于完整赋值的情况(如
b_temp
),reg会被综合为wire连线。
总结
- 在描述组合逻辑的always块中,寄存器被综合成wire型;如果存在不完整的赋值的情况,则被综合成锁存器。
- 在描述时序逻辑的always块中,寄存器则根据语句块的内容被综合成触发器。
热门推荐
发售预付款消费卡的商家应如何开具发票
实体店购买的手机激活之后退货政策是怎样的?
强化学习基础概念:从基本原理到未来应用
申请人身保护令需要满足哪些条件
拉脱水是什么症状
都说血压高不好,那么血压是越低越好吗?
新能源电池CCS集成母排信号采集组件 — FPC/FDC/FFC/FCC简介
首钢的重生:工业遗址改造设计策略
江苏徐州新沂和邳州两大县域的未来发展方向
夏威夷果的热量高吗?减肥期间可以食用吗?
市值怎么计算,按照以下公式计算
新能源电动车电池衰减率及更换标准详解
如何看板子是不是贴牌产品
股票估值方法与跌停应对策略
女命八字里的七杀—女命八字七杀详解:命运转折的关键点
小沈阳演唱会感谢恩师赵本山,几度哽咽落泪:没有他就没我的今天
机器学习算法的另一个分支-贝叶斯算法原理(贝叶斯要解决什么问题)
冬季汽车防冻液加注全攻略:帕萨特PHEV车主实用指南
探秘福建红茶:历史渊源、制作工艺和品鉴技巧
吃双氯芬酸钠对关节痛有效多久
科技赋能让“小叶子”走向“大产业”
户口 · 办事直通车
Docker下如何删除容器
又帅又有演技!柯震东挺过负面风波,靠《不够善良》首叩金钟奖
牙龈有炎症吃什么药效果好?牙龈发炎最怕三个药
《街灯晚餐》:一首关于爱情与坚持的歌
《魔兽世界》11.0战团系统功能全解
QRS在心电图上是指什么
二手车买卖合同审查指南:确保交易安全
喉罩科普:安全、便捷的气道管理工具