- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基本设计技巧
乒乓操作
1 操作过程
2 从外部看,数据流没有停顿的进出
3 用低速模块处理高速数据流
4 实际上,用两个缓冲模块实现了串并转换,两个预处理模块并行,面积换速度; 串并转换
串并转换
1 FPGA设计的一个重要技巧
2 数据流处理的常用手段
3 面积与速度互换思想的直接体现
串并转换的实现方法多种多样,根据数据的排序和数量的要求,可以选用:
1 寄存器:小设计
2 RAM:数据量比较大的情况
3 状态机:复杂的串并转换
流水线操作
1 流水线处理是高速设计中的一个常用设计手段
2 如果某个设计的处理流程分为若干步骤,而且整个数据处理是“单流向”的,即没有反馈或者迭代运算,前一个步骤的输出是下一个步骤的输入,则可以考虑采用流水线设计方法提高系统的工作频率。
3 将适当划分的n个操作步骤单向串连起来
4 数据流在流水线各个部分的处理,从时间上看是连续的
5 数据流依次流经n个模块,完成每个步骤的操作
6 流水线设计时,时序要进行合理安排,每个操作步骤的划分要合理,仔细考虑各个步骤间的数据流量
7 如果前级操作时间恰好等于后级的操作时间,设计最为简单,前级直接输出到后级的输入即可
8 如果前级操作时间大于后级的操作时间,则后级会经常空闲。可以对前级的输出数据适当缓存,再输出到后级的输入端 如果前级操作时间小于后级的操作时间,则必须通过复制逻辑,将数据流分流和并行预处理,或者在前级对数据采用存储、后处理方式,否则会造成后级数据溢出
数据接口的同步
1 两种易出问题的设计习惯
--手工加入非门调整数据延迟,从而保证本级时钟对上级数据的建立、保持时间的要求
--为了有稳定的采样,时而用正沿打一下数据,时而用负沿打一下数据,以调整数据的采样位置
2 问题
--一旦芯片更新换代,或者移植到其它器件系列的芯片上,采样实现必须重新设计
--这两种做法造成电路实现的时序余量不够,一旦外界条件变换(比如温度升高),采样时序就有可能紊乱,造成电路不能完成预定的功能
3 如果输入数据的节拍和本系统处理时钟同频,可以直接用本系统的主时钟对输入数据寄存器采样,完成输入数据的同步化 如果输入数据的节拍和本系统处理时钟同频,可以直接用本系统的主时钟对输入数据寄存器采样,完成输入数据的同步化
4 为了避免异步时钟域产生错误的采样数据,一般使用RAM、FIFO缓存的方法完成异步时钟域的数据转换。在输入端口使用上级时钟写数据,在输出端口使用本级时钟读数据,就非第2节 FPGA设计思考
硬件描述语言的层次含义
HDL是目前数字ASIC、FPGA、CPLD等最重要的一种设计输入方式:
1 利于自顶向下的设计 2 利于模块划分与复用 3 可移植性好、通用性好 4 与工艺无关等 常用的概念层次 系统级 功能模块级 行为级 寄存器转移级 门级
Coding Style
1 使用高层次HDL进行硬件设计,所带来的问题是设计者的设计思考与实际电路结构是脱节的;
2 实际设计中,由于每个设计者对语言规则、电路行为的理解不同,编程风格不同,往往对同样的系统功能,描述的方式是不一样的。所综合出来的电路结构更是大相迳庭; 即使最后综合出来的电路都能实现相同的逻辑功能,其复杂程度和延时特性都会有较大差别; 与设计层次有关;
3 与综合工具相关;
--挥综合工具的最大潜能
--不同综合工具对一些语法细节的解释略有不同。
4 与器件的硬件结构相关
--充分、合理的使用硬件资源
分层次的模块化设计
1 结构层次化编码是模块化设计思想的一种体现。目前大型设计中必须采用结构层次化编码风格,以提高代码的可读性,易于模块划分,易于分工协作,易于设计仿真测试激励;
2 最基本的结构化层次由一个顶层模块和若干个子模块构成,每个子模块根据需要还可以包含自己的子模块。
3 结构的层次不宜太深;
4 顶层模块仅包含对所有模块的组织和调用;
5 所有I/O信号的描述在顶层模块完成;
6 子模块之间可以有接口;不要建立子模块之间跨层次的接口;
7 子模块的合理划分很重要,应该综合考虑子模块的功能、结构、时序、复杂度等多方面因素。
模块划分的技巧
1 结构层次化设计方法的第一个要点就是模块划分,模块划分非常重要,关系到能否最大程度上发挥项目成员协同设计的能力,更重要的是它直接决定着设计的综合、实现的耗时与效率。
2 模块划分的基本原则如下:
--对每个同步时序设计的子模块的输出使用寄存器,有利于综合工具对逻辑进行优化;
--关的逻辑或可以复用的逻辑划分在同一模块内;
--将不同优化目标的逻辑分开;
--将松约束的逻辑归到同一模块;
--将存储逻辑独立划分成模块;
--合适的
文档评论(0)