#嵌入式##fpga#15条经验总结,让FPGA设计更简单!!!!!!!!
1、硬件设计基本原则
1)、速度与面积平衡和互换;
2)、硬件原则:理解HDL本质;
3)、系统原则:整体把握;
4)、同步设计原则:设计时序稳定的基本原则。
2、FPGA系统行为的建模层次有系统级、算法级、寄存器传输级、逻辑级、门级、电路 开关级
3、除了描述仿真测试激励(Testbench)时使用for循环语句外,极少在RTL级编码中使用for循环,这是因为for循环会被综合器展开为所有变量情况的执行语句,每个变量独立占用寄存器资源,不能有效地复用硬件逻辑资源,造成巨大的浪费。
4、if…else…和case的区别。
1)、if…else…是有优先级的;
2)、case语句是平行语句,它是没有优先级的。
5、FPGA 一般触发器资源比较丰富,而CPLD组合逻辑资源更丰富。
6、善用芯片内部的PLL或DLL资源完成时钟的分频、倍频率、移相等操作,能够有效地提高系统的精度和工作稳定性。
7、异步电路和同步时序电路的区别
简单地说异步电路的时钟频率不同或者相位不同,或者两者都不同;同步电路的时钟频率同频同相。
8、同步设计中,稳定可靠的数据采样必须满足建立时间和保持时间。
9、同步时序设计需要掌握异步时钟域的数据转换、组合逻辑电路的设计方法、同步时序电路的时钟设计、同步时序电路的延迟等等。
10、Verilog 定义的reg型,不一定综合成寄存器。
在Verilog代码中最常用的两种数据类型是wire和reg型,一般来说,wire型指定的数据和网线通过组合逻辑实现,而reg型指定的数据不一定就是用寄存器实现。
11、掌握常用设计思想与技巧
1)、乒乓操作;
2)、串并转换;
3)、流水线操作;
4)、异步时钟域的数据同步。
12、模块划分基本原则:
1)、对每个同步时序设计的子模块的输出使用寄存器;
2)、将相关逻辑和可以复用的逻辑划分在同一模块内;
3)、将不同优化目标的逻辑分开;
4)、将送约束的逻辑归到同一模块;
5)、将存储逻辑独立划分成模块;
6)、合适的模块规模;
7)、顶层模块最好不进行逻辑设计。
13、组合逻辑的注意事项
1)、避免组合逻辑反馈环路,容易毛刺、振荡、时序违规等;
2)、替换延迟链;
3)、替换异步脉冲产生单元;
4)、慎用锁存器。
14、同步时序电路推荐的时钟设计方法
时钟经全局时钟输入引脚输入,通过FPGA内部专用的PLL或DLL进行分频/倍频、移相等调整与运算,然后经FPGA内部全局时钟布线资源驱动到达芯片内所有寄存器和其他模块的时钟输入端。
15、FPGA设计者的基本功
编码#Verilog#、仿真、综合、时序分析、调试验证。
春节假期结束了,又要投入到新的工作当中,希望各位努力加油吧!!!!!!