转载优质文章
文章平均质量分 90
转载一些个人认为内容优质的FPGA相关文章。
电路_fpga
闻道有先后 术业有专攻
展开
-
FPGA从入门到精通(7)-BRAM
本文详细介绍了FPGA中块RAM(BRAM)的工作原理和配置选项。对比了BRAM与DRAM的不同,强调了BRAM在读取操作时的时序逻辑特性。通过Vivado软件的BRAM配置界面,解释了BRAM的接口类型、存储类型、错误校验(ECC)和写使能等高级选项。进一步,讨论了BRAM的三种读写模式,并分析了每种模式的特点和应用场景。此外,还探讨了BRAM的高级功能,如输出寄存器、复位选项和地址变化指示,以及如何在设计中避免读写和写写冲突。转载 2024-04-05 15:52:45 · 890 阅读 · 0 评论 -
FPGA从入门到精通(6)-DSP48E1(理论篇)
本文概述了XILINX FPGA中的DSP48E1模块的结构和功能,强调了其在FPGA设计中的重要性。介绍了DSP48E1的内部组件,包括寄存器、加法器、乘法器、ALU(算术逻辑单元)和模式检测器,并解释了它们在执行复杂数学运算中的作用。通过DSP48E1 Marco IP的使用,演示了如何实现特定的算术表达式,并讨论了位宽对资源利用的影响。此外,还比较了使用DSP48E1与CLB进行加减法运算的差异,并探讨了DSP48E1的级联能力和PATTERN DETECT功能。转载 2024-04-05 15:44:38 · 476 阅读 · 0 评论 -
FPGA从入门到精通(5) - 存储单元&CLB总结
本文深入探讨了XILINX FPGA中存储单元的结构和特性,区分了触发器和锁存器,并重点讲解了触发器的应用。通过图示和例子阐释了存储单元的数据输入、时钟使能、复位端等功能,并讨论了存储单元1和存储单元2的异同点。同时结合前文内容,回顾了CLB的整体结构,梳理了LUT、进位链、存储单元以及MUX在FPGA设计中的作用和相互关系。最后通过实例展示了SLICE在CLB中的排列和互联方式,为读者提供了FPGA设计的实用知识。转载 2024-04-05 15:39:01 · 223 阅读 · 0 评论 -
FPGA从入门到精通(4) - 进位链
本文详细介绍了加法器的基本概念,包括半加器和全加器的工作原理,并扩展到多位加法器的构成。通过二进制加法的例子,解释了加法过程中的进位产生和结果位的计算方法。进一步,联系到XILINX FPGA中进位链的结构和功能,阐释了进位链在FPGA中实现多位加法和减法的作用。通过具体的例子和综合后的原理图,展示了进位链在实际硬件设计中的应用。最后,讨论了进位链级联的限制和对系统时序的影响,提供了设计时的一些考虑和建议。转载 2024-04-05 15:31:41 · 446 阅读 · 0 评论 -
FPGA从入门到精通(3) - MUX
本文详细介绍了多路数据选择器(MUX)的工作原理和在FPGA中的实现方式。首先解释了MUX的基本功能,即根据地址码选择不同的数据输入并输出。随后,通过具体的Verilog代码示例和对应的网表,阐述了如何使用LUT6构建MUX4_1,并解释了其内部初始化值的设定。进一步探讨了使用LUT6结合MUXF7和MUXF8构建更高位的MUX8_1和MUX16_1的结构和原理,指出了这种设计相较于仅使用LUT6的优势,特别是在保持信号延迟一致性方面。转载 2024-04-05 15:26:59 · 238 阅读 · 0 评论 -
FPGA从入门到精通(2) - DRAM
本文讲解了FPGA中SLICEL与SLICEM的区别,并介绍了分布式随机存储器(DRAM)的多种形态及其与移位寄存器(SRL)的结合使用。通过实例和仿真结果,比较了使用Verilog代码直接定义RAM与调用DRAM原语/IP的差异,指出了直接编码可能造成的资源过度消耗。最后,文章指导了如何在Vivado中使用IP Catalog生成自定义的DRAM,强调了理解和优化DRAM设计在FPGA开发中的重要性。转载 2024-04-05 15:22:14 · 332 阅读 · 0 评论 -
FPGA从入门到精通(1) - LUT:(look up table) 查找表
文章详细介绍了FPGA中的LUT(查找表)及其在可编程逻辑块(CLB)中的作用。通过分析Verilog代码和对应的门级电路图,解释了LUT如何通过真值表映射来替代传统的门电路,从而提高FPGA的灵活性和资源利用率。特别强调了LUT6的使用,包括其与两个LUT5和一个多路选择器(MUX)的关系,以及如何通过设置INIT值来实现不同的逻辑操作。转载 2024-04-05 15:13:43 · 1301 阅读 · 1 评论 -
FPGA高速设计(六续)
本文讨论了FPGA时序分析中的pessimism removal(CPR)和setup时间的负值问题。CPR用于修正时序分析中的过度悲观估计,当CPR为负值时,意味着目的地时钟路径的延迟被过度减少。文章通过具体例子解释了CPR计算方法,并指出实际值应介于理论计算和时序报告之间的某个点。至于setup时间的负值,通常表示数据在时钟边沿到来之前已经稳定,但由于内部时钟延迟大于数据延迟,可能导致寄存器的固有setup时间表现为负值。文章最后建议设计者信任工具的计算结果,同时提供了对时序报告的深入理解。转载 2024-03-14 11:25:30 · 261 阅读 · 0 评论 -
FPGA高速设计(六)
本文讨论了FPGA高速设计中扇出问题的影响和解决方法。扇出过大会导致输出波形失真,影响时序收敛,进而影响电路性能。作者通过实例分析了高扇出逻辑的负面影响,并提出了两种减少扇出的方法:寄存器复制和使用max_fanout约束。同时,文章还简要介绍了如何通过软件查看时序报告,以及时序报告中的关键术语,如WNS、TNS、WHS等,为读者提供了时序分析的基础知识。转载 2024-03-14 11:23:49 · 255 阅读 · 6 评论 -
FPGA高速设计(五)
本章节主要讨论了FPGA中乘法器和比较器的实现以及逻辑层级的优化。乘法器通常通过调用IP核实现,而比较器则可以通过LUT资源进行综合。针对大位宽的运算,介绍了使用流水线技术拆分逻辑以降低逻辑层级,满足高速设计需求的方法。同时,分析了if-else和case语句在FPGA中的实现和资源消耗,指出现代综合器下二者差异不大,但需注意条件判断中的大位宽运算对逻辑层级的影响。最后,提出了代码拆分的技巧,以适应高速项目中对逻辑层级和资源的严格要求。转载 2024-03-14 11:23:19 · 200 阅读 · 1 评论 -
FPGA高速设计(四)
在FPGA中实现比较器时,可以构建等于、不等于、大于、小于等比较逻辑。对于等于比较器,通过每位进行“同或”操作后“相与”得到结果;而大于比较器则通过逐位比较和进位逻辑实现。在小位宽情况下,使用LUT资源进行综合较为简单且资源消耗较少;但随着位宽增加,使用CARRY4进位链的综合方式因延迟较小而更为高效。Vivado倾向于使用CARRY链来优化大位宽比较器的逻辑层级和性能,尽管这可能导致LUT资源的增加。设计时需考虑位宽、资源消耗和逻辑层级,以实现高效的比较器设计。转载 2024-03-14 11:22:20 · 602 阅读 · 3 评论 -
FPGA高速设计(三)
本文深入探讨了FPGA中加法器的设计和逻辑层级,特别是24位加法器与相等比较器的结合使用。通过分析K7芯片的SLICE结构,文章指出加法器的关键路径和逻辑层级,强调了大位宽带来时序收敛和资源布局的挑战。文中还讨论了累加器和三输入加法器的实现,揭示了这些结构在资源使用和逻辑层级上的优势。最后,作者建议使用Vivado的TCL命令来自动化分析设计,以便更高效地优化FPGA代码。转载 2024-03-14 11:21:53 · 239 阅读 · 6 评论 -
FPGA高速设计(二)
本文详细介绍了FPGA设计中加法器的实现,特别是针对Xilinx K7芯片。文章首先解释了FPGA的基本逻辑单元SLICE的结构和功能,强调了LUT(查找表)在实现逻辑功能中的核心作用。接着,文章深入探讨了加法器的原理和在FPGA中的两种实现方式:使用LUT和CARRY4的进位链方式,以及仅使用LUT的方式。通过比较不同实现方式的资源占用和逻辑层级,文章指出了在设计时考虑逻辑层级的重要性,并对累加器的设计进行了特别讨论。文章提到了if-else逻辑在FPGA设计中的使用限制,强调了设计时应避免复杂的逻转载 2024-03-14 11:21:27 · 282 阅读 · 1 评论 -
FPGA高速设计(一)
这段内容讨论了FPGA高速设计的重要性和实践,强调通过代码优化提升设计性能以节省成本和提高开发效率。作者分享了Xilinx 7系列和UltraScale系列FPGA的逻辑延迟与线延迟比例,指导如何评估和优化设计。通过实例,作者阐释了逻辑层级在FPGA设计中的关键作用,并指出理论与实践间的差异。最后,作者承诺将来会深入分析Kintex-7芯片结构,帮助读者更有效地进行FPGA设计。转载 2024-03-14 11:20:46 · 490 阅读 · 5 评论