advanced fpga design

本文探讨了数字系统设计中的核心概念,包括吞吐率、延迟与时序信息的重要性。介绍了流水线结构及其在高性能设备中的应用,如CPU指令集、网络协议栈等。此外,还讨论了如何通过多种技术改善时序,例如逻辑打平、寄存器平衡等方法。文中也提到了FPGA设计中的注意事项,如合理使用复位信号以节省资源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基础概念

------------------------------------------------------------------------------------------------------------------------

speed取决于三个因素:吞吐率(每个cycle可以处理的数据量),延迟(数据从输入到输出的cycle数),时序信息(时序器件的延时)时序收敛的(每个cycle的时间)。

 

  • 高吞吐率的结构: pipeline,类似于汽车制造装配线线。very-high performance devices, 比如:CPU指令集,网络协议栈,编码引擎。

迭代展开(流水线展开)是一种好方法,以面积为代价提高吞吐率。

  • 低延时结构:打断流水线,增加了关键路径的延时。
  • 改善时序:1)加一级寄存器,但是这样会增加 latency,多了一个cycle的延时可能功能就不同了;2)并行结构(不太懂);3)逻辑打平(删除优先级编码);4)寄存器平衡(前后级寄存器间共同分担延时);5)路径重排;   ----主要掌握1,3,其他的综合工具会做。

 

architecting aera

  • 用流水线迭代
  • 复杂的控制逻辑来达到逻辑复用的目的
  • 高层次模块共享
  • 在FPGA中:由于有很多现成的资源,比如BRAM,DSP。不恰当的复位使用可能会导致不能使用这些现成的单元而用其他的逻辑来实现,耗费大量面积。因此当面积是一个重要影响因素时,谨慎使用复位尤其是异步复位。

 

Power

  • 时钟门控
  • 减少输入的翻转次数
  • 降低电压
  • 降低频率的同时双沿触发(需要有这种资源)

 

clock domains

  • phase control - use PLL or DLL 让内部时钟和外部时钟建立关系
  • 用2个FF来同步,但是仅适用于1bit的信号同步
  • asynchronous FIFO - Gray Code
  • FPGA中避免适用门控时钟,如果必须使用,那么把所有的门控始终放到同一个模块内 (`ifdef  `else `endif)

 

math functions

  • 硬件除法器开始引出问题 1)转化为先乘后除2)迭代,相当于除法公式3)GoldSchmidt 方法
  • 泰勒展开和麦克劳林展开(处理复杂的函数,sin,ln,ex
  • cordic专门计算sin,cos

 

reset circuits

  • 异步复位,同步释放
  • 不同的复位类型不要写在一个always块里面
  • 需要内部信号产生异步复位电路要注意,因为组合电路会有冒险,产生非预期的复位信号(看卡诺图)
  • 多时钟域的情况需要多个复位同步器

 

 

一些实用的例子,这些例子安排在各章,分别是对前面各章的一个总结和应用

------------------------------------------------------------------------------------------------------------------------

  • chapter4  AES, 说明了各种流水线结构,讨论了性能(吞吐量,延时,时序)和面积的折中问题
  • chapter7  I2S和DIF,说明了高层架构设计问题,以及多时钟域问题通信。
  • chapter9  浮点数运算单元
  • chapter13  安全散列算法,

 

 

------------------------------------------------------------------------------------------------------------------------

advanced simulation

  • 层次化的验证平台
  • automatic, self-check
  • testcase相互不要联系,隔开来
  • 使用MATLAB来产生激励和校验信息
  • code-coverage
  • 门级仿真来估计动态功耗
  • Timescale precision must be chosen to balance simulation accuracy against run-time (simmulation time / run time )

 

coding for synthesis

  • verilog 中的case 是有优先级的, parallel_case/full_case只是综合指令,可能会导致综合前后的电路不一样
  • 数据通路部分和控制结构要分开来设计(因为数据通路部分通常是关键路径,并且面积较大)
  • 层次结构清晰,接口明确
  • 参数化设计,传递参数
  • `ifdef FPGA 宏定义

转载于:https://www.cnblogs.com/azure_seu/archive/2011/06/16/2083024.html

内容概要:本文从关键概念、核心技巧、应用场景、代码案例分析及未来发展趋势五个维度探讨了Python编程语言的进阶之路。关键概念涵盖装饰器、生成器、上下文管理器、元类和异步编程,这些概念有助于开发者突破基础认知的核心壁垒。核心技巧方面,介绍了内存优化、性能加速、代码复用和异步处理的方法,例如使用生成器处理大数据流、numba库加速计算密集型任务等。应用场景展示了Python在大数据处理、Web开发、人工智能和自动化运维等多个领域的广泛运用,特别是在FastAPI框架中构建异步API服务的实战案例,详细分析了装饰器日志记录、异步数据库查询和性能优化技巧。最后展望了Python的未来发展趋势,包括异步编程的普及、类型提示的强化、AI框架的深度整合以及多语言协同。 适合人群:已经掌握Python基础语法,希望进一步提升编程技能的开发者,特别是有意向从事数据科学、Web开发或AI相关工作的技术人员。 使用场景及目标:①掌握Python进阶概念和技术,如装饰器、生成器、异步编程等,提升代码质量和效率;②学习如何在实际项目中应用这些技术,如通过FastAPI构建高效的异步API服务;③了解Python在未来编程领域的潜在发展方向,为职业规划提供参考。 阅读建议:本文不仅提供了理论知识,还包含了丰富的实战案例,建议读者在学习过程中结合实际项目进行练习,特别是尝试构建自己的异步API服务,并通过调试代码加深理解。同时关注Python社区的发展动态,及时掌握最新的技术和工具。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值