本帖最后由 czd886 于 2021-10-2 16:11 编辑
硬件描述语言HDI,是基于行为级描述的语言,用HDL设计开发的FPGA芯片,由于FPGA器件自身的结构特点,使得FPGA器件在生成的电路结构、电路性能、内部资源的消耗及器件的运行速度等方面存在一定的缺陷。分析探讨了优化FPGA芯片设计,改进用VHDL语言描述电路结构的几种方法。
1、时钟控制:
在复杂的数字电路系统中,常常会出现这种情况:一个数字系统有时会需多个时钟信号,为了保证不同时序模块时钟的同步,系统的外部只能提供一个基准时钟源,如在设计数字钟时,数字钟的计数时钟和控制LED数码管位扫描的时钟就是两个不同的时钟信号,前者的频率是1Hz,后者的频率要求50~100Hz之间,而系统外部只提供一个基准时钟信号。对于这种情况,可以选一个合适高频的基准时钟,对此时钟进行分频,分别得到两个不同的时钟信号。当出现设计系统需要多个时钟,而且,各时钟频率之间没有整数倍关系时,可以选一个2倍于最高频率的时钟,并对此时钟进行采样,再分别得到所需的各时钟频率。而且此时得到的各时钟频率能满足系统设计要求,相位还同步。此方法能有效增强设计系统的稳定性。
对于多时钟数字系统,在设计时要正确处理时钟域之间的接口,不使用FPGA内部组合逻辑产生的信号作为时钟,以降低功耗需求。VHDL语言的代码描述为:
门控时钟描述的代码:
GateClk《=inputl and clk;
Process(GateClk)
Begin
If(GateClk'event and GateClk='1')then
If(load='1')then
Out_data《=data;
End if;
End if;
End process;
时钟使能描述的代码:
enable《=inputl and load;
Process(enable,ctk)
Begin
If(GateClk'event and GateClk='1')then
If(enable='1')then
Out_data《=data;
End if;
End if;
End process;
2、异步/同步时序逻辑
在时序逻辑电路设计时,可以采用同步电路和异步电路两种设计方法。同步时序电路使用组合逻辑和触发器实现电路功能,电路的主要信号和输出信号都由统一的基准时钟驱动触发器产生,可以避免毛刺与竞争冒险。而异步电路采用组合逻辑,没有统一的时钟信号,容易产生毛刺和竞争冒险,电路不稳定。
从电路延迟方面考虑,异步电路是通过逻辑门电路来实现的,延迟难以预测,而同步设计使用计数器或触发器实现延时的,用于计数器和触发器的时钟稳定性决定了同步时序电路的性能,现在FPGA内部有专用的时钟资源,如专用的时钟管理模块、全局时钟布线资源等,其时钟的质量与性能是可以得到保障的。从资源使用方面考虑,FPGA是以逻辑单元衡量电路面积的,所以同步设计并不
比异步设计浪费资源。目前,商用的FPGA都是面向同步的电路设计而优化的,同步时序电路可以很好地避免毛刺,提倡在设计中采用同步逻辑电路。特别注意,不同的时钟域的接口需要进行同步。、
3、层次化电路设计
在复杂的电路系统设计中,通常系统设计无法在一个设计实体里实现,这时就可以将此系统按功能模块划分,先分别设计各底层的功能模块,并对每个功能模块进行优化设计,再将各模块连接起来,划分功能模块时尽量使各个模块之间的I/O连接最少。完成一个层次化设计之后,设计者可以在开发工具中通过选项设置,允许跨越功能模块的边界对设计进行优化,从而使电路结构更加合理。如果设计者对设计中不同模块有不同的优化条件和要求(有的要求面积最小,有的要求速度最快),也可以在逻辑综合过程中保持设计原来的层次结构,并按照设计的要求设置约束条件。