高质量VerilogHDL描述方法

一、关于Verilog HDL的认知

HDL:Haedware Description
·HDL语言仅是对已知电路的文本表现形式描述,描述前必须对所需实现的硬件电路“胸有成竹”。
·描述可综合的硬件电路。
·相比C语言,最显著的区别在于HDL语言具备以下硬件设计的基本概念:
互连(connectivity):-wire型变量描述各个模块之间的端口与网线连接关系;
并发(concurrency):-可以有效地描述并行的硬件系统;
时间(time):-定义了绝对和相对的时间度量,可综合操作符具有物理延迟。

二、Verlog HDL用于可综合描述的语句

可综合四大法宝:always、if-else、case、assign
latch:尽量避免产生,产生的途径为不完备的条件判断语句
2.1 if-else
映射的硬件结构:Multiplexing Hadware(多路选择器)
输出结果由输入的选择条件决定

if (Aflag == 1'b1) 
 	OutDate <= A + B;
 else
 	OutDate <= C + D;

在这里插入图片描述
重构if-else映射的硬件结构:减少一个加法器,减少了硬件的面积(加法器结构复杂,有很多晶体管构成)

if (Aflag == 1'b1) 
 begin
 	Op1 <= A;
 	Op2 <= B;
 end
 else
 	begin
 	Op1 <= C;
 	Op2 <= D;
 	end
 	
 OutDate <= Op1 + Op2;

在这里插入图片描述
第二种电路结构控制通道的延时较大,虽然第二种电路面积较小但如果Aflag信号到来的比较晚那么第二种电路就会比第一种电路的性能要差。
需根据输入约束,小心设计:先“加”后“选”,先“选”后“加”。

2.1.1单if语句–无优先级的判断结构(if…elseif…elseif…)
2.1.2多if语句–具有优先级的判断结构(if…if…)
具有优先级的多选结构会消耗组合逻辑,不推荐
若设计中有些信号要求先到达(如关键使能信号、选择信号等),而有些信号需要后到达(如慢速信号、有效时间较长的信号等),此时需要使用if…if…结构。

2.2 case语句–无优先级
条件互斥,多用于指令译码电路
2.2.1综合器指令
实例:交通控制红绿灯,只有红、绿、黄三种情况
,不会出现第四种。

always @(a, b, c, sel)
 case(sel)
 2'b00:y=a;
 2'b01:y=b;
 2'b10:y=c;
 endcase

这个时候如果直接用综合器进行综合就会生成一个latch。
full_case: 告诉综合器,当前case结构所列条件已完备

always @(a, b, c, sel)
 case(sel) //synopsys full_case
 2'b00:y=a;
 2'b01:y=b;
 2'b10:y=c;
 endcase

这样综合报告中就不会有latch.
有时在casez语句综合报告中会有优先级结构产生,如果不想出现,与上述同理。
parallel_case:告诉DC,所有条件均互斥,且并行,无优先权。

2.3逻辑复制,均衡负载
在这里插入图片描述
通过逻辑复制,降低关键信号的扇出,进而降低该信号的传播延迟,提高电路性能。

2.4 资源顺序重排,降低传播延时
在这里插入图片描述
2.5 资源共享,减少面积
在这里插入图片描述
共享会导致性能下降,要在性能和面积中学会取舍。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值