赛灵思公司提供的Verilog(FPGA-CPLD)设计小技巧.doc

赛灵思公司提供的Verilog(FPGA-CPLD)设计小技巧.doc

ID:28146523

大小:27.50 KB

页数:6页

时间:2018-12-08

赛灵思公司提供的Verilog(FPGA-CPLD)设计小技巧.doc_第1页
赛灵思公司提供的Verilog(FPGA-CPLD)设计小技巧.doc_第2页
赛灵思公司提供的Verilog(FPGA-CPLD)设计小技巧.doc_第3页
赛灵思公司提供的Verilog(FPGA-CPLD)设计小技巧.doc_第4页
赛灵思公司提供的Verilog(FPGA-CPLD)设计小技巧.doc_第5页
资源描述:

《赛灵思公司提供的Verilog(FPGA-CPLD)设计小技巧.doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、赛灵思公司提供的Verilog(FPGA/CPLD)设计小技巧  这是一个在设计中常犯的错误列表这些错误常使得你的设计不可靠或速度较慢为了提高你的设计性能和提高速度的可靠性你必须确定你的设计通过所有的这些检查。  可靠性为时钟信号选用全局时钟缓冲器BUFG?不选用全局时钟缓冲器的时钟将会引入偏差。只用一个时钟沿来寄存数据?使用时钟的两个沿是不可靠的因为时钟的某沿或者两个沿会漂移;如果时钟有漂移而且你只使用了时钟的一个沿你就降低了时钟边沿漂移的风险。?这个问题可以这样来解决就是允许CLKDLL自动纠正时钟的占空比以达百分之五十的占空比否则强烈建议你只使用一个时钟沿**除了用CLKDLL或DCM产

2、生的时钟外不要在内部产生时钟。?这包括产生门控时钟和分频时钟?作为替代可以建立时钟使能或使用CLKDLL或DCM来产生不同的时钟信号。?对于一个纯同步设计建议你在任何可能的情况下只使用一个时钟  可靠性为时钟信号选用全局时钟缓冲器BUFG?不选用全局时钟缓冲器的时钟将会引入偏差。只用一个时钟沿来寄存数据?使用时钟的两个沿是不可靠的因为时钟的某沿或者两个沿会漂移;如果时钟有漂移而且你只使用了时钟的一个沿你就降低了时钟边沿漂移的风险。?这个问题可以这样来解决就是允许CLKDLL自动纠正时钟的占空比以达百分之五十的占空比否则强烈建议你只使用一个时钟沿**除了用CLKDLL或DCM产生的时钟外不要在内

3、部产生时钟。?这包括产生门控时钟和分频时钟?作为替代可以建立时钟使能或使用CLKDLL或DCM来产生不同的时钟信号。?对于一个纯同步设计建议你在任何可能的情况下只使用一个时钟  不要在内部产生异步的控制信号例如复位信号或者置位信号?内部产生的异步控制信号会产生毛刺?作为替代可以产生一个同步的复位/置位信号这个信号的译码要比需要作用的时刻提前一个时钟周期**不要使用没有相位关系的多个时钟?你也许并不总能避免这个条件在这些情况下确定你已使用了适当的同步电路来跨越时钟域**不要使用没有相位关系的多个时钟?再次你也许并不总能避免这个条件相反许多设计都需要这样在这些情况下确定你已适当地约束了跨越时钟域的

4、路径  不要使用内部锁存器?内部锁存器会混淆时序而且常常会引入另外的时钟信号?内部锁存器在透明门打开时可以被看成是组合逻辑但在门被锁存时可以被看成是同步元件这将会混淆时序分析?内部锁存器常常会引入门控时钟门控时钟会产生毛刺使得设计变得不可靠  性能逻辑级的时延不要超过时序预算的百分之五十?每个路径逻辑级时延可以在逻辑级时序报告或布局后时序报告中找到详细分析了每个路径之后时序分析器将生成每个路径时延的统计量检查一下总共的逻辑级时延超过了你的时序预算的百分之五十吗?  IOB寄存器?IOB寄存器提供了最快的时钟到输出和输入到时钟的时延?首先有一些限制对于输入寄存器在从管脚到寄存器间不能有组合逻辑存

5、在对于输出寄存器在寄存器和管脚之间也不能有组合逻辑存在对于三态输出在IOB中的所有的寄存器必须使用同一个时钟信号和复位信号而且IOB三态寄存器必须低电平有效才能放到IOB中三态缓冲器低电平有效所以在寄存器和三态缓冲器之间不需要一个反相器?你必须使软件能够选用IOB寄存器你可以设置全局实现选项为输入输出或输入输出选择IOB寄存器缺省值为关(off)。?你也可在综合工具或在用户约束文件UCF中设定使得能够使用IOB寄存器句法为:INST《io_register_name》IOB=TRUE;  对于关键的输出选择快速转换速率?可以为LVCMOS和LVTTL电平选择转换速率快速的转换速率会降低输出时延

6、但会增加地弹所以你必须在仔细考虑的基础之上选择快速转换速率  流水逻辑?如果你的设计允许增加延迟对组合逻辑采用流水操作可以提高性能?在Xilinx的FPGA中有大量的寄存器对每一个四输入函数发生器有一个对应的寄存器在牺牲延迟的情况下利用这些寄存器来增加数据吞吐量  为四输入的查找表结构进行代码优化?记住每一个查找表可以建立一个四输入的组合逻辑函数如果你需要更大的功能记住实现该功能所需的查找表的数目  使用Case语句而不是if-then-else语句?复杂的if-then-else语句通常会生成优先级译码逻辑这将会增加这些路径上的组合时延?用来产生复杂逻辑的Case语句通常会生成不会有太多时延

7、的并行逻辑对于Verilog用户可以使用编译向导synopsysparallel_case  使用一个或多个核生成器块?核生成器块针对Xilinx的结构进行了优化许多块都可以允许用户配置包括大小宽度和流水延迟?查看你设计中的关键路径你是否可以在核生成器中产生一个核来提高键路径性能  使有限状态机FSM保持在层次中的自己所在的那一级?为了允许综合工具完全优化你的FSM它必须在它自己的块中优化如果不是

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。