大唐电信FPGA-CPLD数字电路设计经验分享(1)

合集下载

FPGA CPLD 数字电路设计经验分享(经典)

FPGA CPLD 数字电路设计经验分享(经典)

FPGA/CPLD数字电路设计经验分享摘要:在数字电路的设计中,时序设计是一个系统性能的主要标志,在高层次设计方法中,对时序控制的抽象度也相应提高,因此在设计中较难把握,但在理解RTL电路时序模型的基础上,采用合理的设计方法在设计复杂数字系统是行之有效的,通过许多设计实例证明采用这种方式可以使电路的后仿真通过率大大提高,并且系统的工作频率可以达到一个较高水平。

关键词:FPGA 数字电路时序时延路径建立时间保持时间1 数字电路设计中的几个基本概念:1.1 建立时间和保持时间:最小建立时间(setup time)是指在触发器的时钟信号上升沿到来以前,数据稳定不变的时间,如果建立时间不够,数据将不能在这个时钟上升沿被打入触发器;保持时间(hold time)是指在触发器的时钟信号上升沿到来以后,数据稳定不变的时间,如果保持时间不够,数据同样不能被打入触发器。

如图1 。

数据稳定传输必须满足建立和保持时间的要求,当然在一些情况下,建立时间和保持时间的值可以为零。

PLD/FPGA开发软件可以自动计算两个相关输入的建立和保持时间(如图2)图1 建立时间和保持时间关系图注:在考虑建立保持时间时,应该考虑时钟树向后偏斜的情况,在考虑建立时间时应该考虑时钟树向前偏斜的情况。

在进行后仿真时,最大延迟用来检查建立时间,最小延时用来检查保持时间。

建立时间的约束和时钟周期有关,当系统在高频时钟下无法工作时,降低时钟频率就可以使系统完成工作。

保持时间是一个和时钟周期无关的参数,如果设计不合理,使得布局布线工具无法布出高质量的时钟树,那么无论如何调整时钟频率也无法达到要求,只有对所设计系统作较大改动才有可能正常工作,导致设计效率大大降低。

因此合理的设计系统的时序是提高设计质量的关键。

在可编程器件中,时钟树的偏斜几乎可以不考虑,因此保持时间通常都是满足的。

1.2 FPGA中的竞争和冒险现象信号在FPGA器件内部通过连线和逻辑单元时,都有一定的延时。

FPGA CPLD

FPGA CPLD
FPGA/CPLD基本结构及原理
一、PLD的编程技术
从电路设计者来说,可将设计好的电路“写入” 芯片(PLD母片),使之成为专用集成电路;有些 PLD可以多次“编程(逻辑重构)”,这就特别适 合新产品试制或小批量生产。PLD的编程技术有下 列几种工艺。
(1)熔丝(Fuse)和反熔丝(Anti-fuse)编程技术
熔丝编程技术是用熔丝作为开关元件,这些开关元件平时 (在未编程时)处于连通状态,加电编程时,在不需要连接 处将熔丝熔断,保留在器件内的熔丝模式决定相应器件的逻 辑功能。 反熔丝编程技术也称熔通编程技术,这类器件是用逆熔丝作 为开关元件。这些开关元件在未编程时处于开路状态,编程 时,在需要连接处的逆熔丝开关元件两端加上编程电压,逆 熔丝将由高阻抗变为低阻抗,实现两点间的连接,编程后器 件内的反熔丝模式决定了相应器件的逻辑功能。
浮栅型紫外线擦除熔丝结构
G1 S
G2 D
SiO2
早期PROM器件 采用此工艺
n+
n+
可反复编程
不用每次上电重新 下载,但相对速度 慢,功耗较大
(3)浮栅型电可写电擦除编程技术(E2PROM)
此类器件在CMOS管的浮栅与漏极间有一薄氧 化层区,其厚度为10μm~15μm,可产生隧道效应。 编程(写入)时,漏极接地,栅极加20V的脉冲电压, 衬底中的电子将通过隧道效应进入浮栅,浮栅管正 常工作时处于截止状态,脉冲消除后,浮栅上的电 子可以长期保留;若将其控制栅极接地,漏极加20V 的脉冲电压,浮栅上的电子又将通过隧道效应返回 衬底,则使该管正常工作时处于导通状态,达到对 该管擦除的目的。编程和擦除都是通过在漏极和控 制栅极上加入一定幅度和极性的电脉冲来实现,可 由用户在“现场”用编程器来完成。

CPLD & FPGA 数字系统的设计及应用

CPLD & FPGA 数字系统的设计及应用

三、适配
将由综合器产生的网表文件配置于指定的目标器件中,使之产 生最终的下载文件,如J时序仿真 接近真实器件运行特性的仿真 功能仿真 直接对VHDL、原理图描述或其他描 述形式的逻辑功能进行测试模拟
五、编程下载
六、硬件测试
PLD设计流程
原理图/VHDL文本编辑
综合
FPGA/CPLD
器件和电路系统
1、isp方式下载 2、JTAG方式下载 3、针对SRAM结构的配置 4、OTP器件编程
功能仿真
逻辑综合器
FPGA/CPLD
适配
结构综合器
时序与功能 门级仿真
1、功能仿真 2、时序仿真
FPGA/CPLD 编程下载
常用的EDA设计工具
1、常用的集成CPLD/FPGA开发工具 2、设计输入工具 3、逻辑综合器 4 、仿真器 5 、下载器 6 、常用的其他EDA工具 Protel 99、SPICE 等 MAX+Plus II、ISE 等 HDL Designer Series、Ultra Edit 等
FPGA Compiler II、Synplify/Synplify Pro、
Leonardo Spectrum 等 Modelsim、Cadence、Synopsys 等
MAX+Plus II 的使用
1、设计输入 2 、编译 3 、仿真 4 、适配 5 、下载 6 、硬件测试
MAX+Plus II 实例应用一
在EDA软件的图形编辑界面上绘 制能完成特定功能的电路原理图
使用某种硬件描述语言(HDL)的电路设计文本,如 VHDL或Verilog的源程序,进行编辑输入。
PLD设计流程
二、 综合
整个综合过程就是将设计者在EDA平台上编辑输入的HDL文本、 原理图或状态图形描述,依据给定的硬件结构组件和约束控制条件 进行编译、优化、转换和综合,最终获得门级电路甚至更底层的电 路描述网表文件。

精品课件-Xilinx FPGACPLD设计初级教程-第1章

精品课件-Xilinx FPGACPLD设计初级教程-第1章
这些早期的PLD器件虽然有较快的逻辑运算速度,但其过 于简单的结构也使它们只能用于规模较小的电路。为了弥补这 一缺陷,在20世纪80年代中期以后,相继出现了现场可编程 门阵列(Field Programmable Gate Array,FPGA)器件和复杂 可编程逻辑器件(Complex Programmable Logic Device, CPLD)。
第1章 PLD概述
2) 现场可编程门阵列(Field Programmable Gate Array, FPGA)
FPGA是在PAL、GAL、PLD等可编程器件的基础上进一步发 展的产物。它是作为专用集成电路(ASIC)领域中的一种半定 制电路出现的,既解决了定制电路的不足,又克服了原有可编 程器件门电路数有限的缺点。FPGA采用了逻辑单元阵列 LCA(Logic Cell Array)这样一个新概念,内部包括可配置逻 辑模块CLB(Configurable Logic Bolck)、输入/输出模块 IOB(Input Output Block)和内部连线(Interconnect)三个部 分。可以说,FPGA芯片是小批量系统提高系统集成度、可靠 性的最佳选择之一。
CPLD是从PAL和GAL器件发展起来的,相对而言规模大, 结构复杂,属于大规模集成电路范围。CPLD也是当前另一主 流的PLD器件。
第1章 PLD概述
现在PLD器件仍向着高密度、高速度、低功耗的方向发展。 特别是FPGA器件,现在它的集成度已经不能和以前的FPGA相 提并论。另外,由于专用集成电路(ASIC)芯片设计具有周期 长、难点多、耗资大等缺点,因此用PLD器件来代替一般的 ASIC芯片进行设计已经成为一种发展趋势。
3) 可编程阵列逻辑(Programmable Array Logic,PAL) PAL是20世纪70年代末由MMI公司率先推出的一种可编程 逻辑器件。它采用双极型工艺制作,并采用熔丝编程方式。 PAL器件由可编程的与逻辑阵列、固定的或逻辑阵列和输出电 路三部分组成。通过对与逻辑阵列编程可以获得不同形式的组 合逻辑函数。

FPGA与CPLD课程心得

FPGA与CPLD课程心得

FPGA与CPLD课程心得159030004 杨文忠QuartusII软件的使用在本科学数电的时候有接触过,当时学的很简单,用的是Verilog,跟之前学过的C++还是有不少共通之处的。

写简单的模块参照书上的例子基本都没什么问题,只是要做一个系统性的东西的时候就有点没有头绪了。

例如这次的电子钟,主程序要怎么分别调用子模块,以及模块与模块之间的连接要如何实现,对于之前没有做过完整工程的我来说都是很大的问题。

刚开始想到的是本科学过的一点简单的单片机知识,当时单片机也是让做的数字钟。

像系统时钟的分频问题,单片机由于位数的限制是需经过多次分频的,而FPGA分频可以实现一次到位。

还有就是按键功能的实现以及状态机的设计,之前都没有什么明确清晰的思路,通过看同学的程序,与这方面比较厉害的同学交流学习,使我对整个设计有了更清晰的认识。

关于引脚锁定的问题,以前没做过具体某一款芯片的实验,都不知道引脚锁定是怎么完成的,通过向同学请教才知道有相应的.tcl文件可以帮助寻找到相应的引脚,特别是对于大型的系统性实验,挨个锁引脚就会变得很繁琐,可以通过修改.tcl文件里的端口名,使其与自己程序里定义的端口名保持一致,然后删除不需要的端口及引脚,保存并运行.tcl文件,可以实现自动锁引脚。

最后总结起来就是得多做,多想,多问。

书读千遍,不如做一遍;看别人做百次,不如自己做一次;就是要实践。

只有通过不断实践,才能发现自己的缺点和不足,才能不断地进步。

在做的过程中要多想,多想想问题出现的原因,问题解决后要多问几个为什么,这也是经验积累的过程,最好要记笔记,把问题及原因、解决的办法都写进去。

还要多问,遇到问题经历了痛苦的思索后还得不到解决就要问了,问搜索引擎,问网友,问同学问老师,一篇文章、朋友们的点拨都可能帮助自己快速解决问题。

最新CPLDFPGA第1章

最新CPLDFPGA第1章

高速发展的可编ห้องสมุดไป่ตู้逻辑器件为现代数字系统设计提供了一种新的实现手段,
代表着数字系统设计领域最新潮流与发展方向。这种设计方法以EDA设计软
件为工具,将传统数字系统设计中的画图、搭建与调试用设计输入、逻辑综 合时序仿真取代,将整个系统下载在一个PLD芯片上,实现SPOC设计。
基于CPLD/FPGA的数字系统SOPC实现
VHDL主要特点
VHDL是一门标准化语言,适用于各种EDA设计开发工具,具有很强的可移植 性。
VHDL是一门设计输入语言,将系统的行为功能用文本代码描述,充分体现了 硬件电路的软件实现方式。
VHDL是一门网表语言,在基于计算机的设计环境中作为不同设计工具间相 互通信的一种低级格式,可替换,可兼容。
编程风格规范严谨,且引入较早的VHDL。
硬件描述语言VHDL
□VHDL 是 美国国 防 部在 7 0年 代末和 80 年代初 提 出的
VHSIC计划的产物。
□VHSIC—Very High Speed Integrated Circuit(1982年)
VHDL: VHSIC Hardware Description Language
• VHDL语法格式类似一般的计算机高级语言,具有强大的系统级行为描 述能力,丰富的仿真语句和库函数,对设计的描述也具有相对独立性。
• Verilog是在C语言基础上发展起来的硬件描述语言,句法格式比较灵活
自由,易学易用,更适合于RTL或门级描述,最大特点是便于综合,对开发
工具要求降低。
• ABEL是一种早期的硬件描述语言支持逻辑电路的多种表达形式,其中
述是硬件描述语言HDL(Hardware Description Language),它用文本形

FPGA CPLD设计学习笔记

FPGA CPLD设计学习笔记

FPGA\CPLD设计学习笔记题记:这个笔记不是特权同学自己整理的,特权同学只是对这个笔记做了一下完善,也忘了是从那DOWNLOAD 来的,首先对整理者表示感谢。

这些知识点确实都很实用,这些设计思想或者也可以说是经验吧,是很值得每一个有志于FPGA/CPLD方面发展的工程师学习的。

1、硬件设计基本原则(1)、速度与面积平衡和互换原则:一个设计如果时序余量较大,所能跑的频率远高于设计要求,能可以通过模块复用来减少整个设计消耗的芯片面积,这就是用速度优势换面积的节约;反之,如果一个设计的时序要求很高,普通方法达不到设计频率,那么可以通过数据流串并转换,并行复制多个操作模块,对整个设计采用“乒乓操作”和“串并转换”的思想进行处理,在芯片输出模块处再对数据进行“并串转换”。

从而实现了用面积复制换取速度的提高。

(2)、硬件原则:理解HDL本质(3)、系统原则:整体把握(4)、同步设计原则:设计时序稳定的基本原则2、Verilog作为一种HDL语言,对系统行为的建模方式是分层次的。

比较重要的层次有系统级(system)、算法级(Algorithm)、寄存器传输级(RTL)、逻辑级(Logic)、门级(Gate)、电路开关级(Switch)。

3、实际工作中,除了描述仿真测试激励(Testbench)时使用for循环语句外,极少在RTL级编码中使用for循环,这是因为for循环会被综合器展开为所有变量情况的执行语句,每个变量独立占用寄存器资源,不能有效的复用硬件逻辑资源,造成巨大的浪费。

一般常用case语句代替。

4、if…else…和case在嵌套描述时是有很大区别的,if…else…是有优先级的,一般来说,第一个if的优先级最高,最后一个else的优先级最低。

而case语句是平行语句,它是没有优先级的,而建立优先级结构需要耗费大量的逻辑资源,所以能用case的地方就不要用if…else…语句。

补充:1.也可以用if…; if…; if…;描述不带优先级的“平行”语句。

CPLD FPGA设计菜鸟必看

CPLD FPGA设计菜鸟必看

所谓综合,就是把描述语言转化成能硬件实现的电路,学verilog的时候,没有人给我说要不要考虑能否综合的问题~~~看了5本书,居然没有一本书讲到能否综合,所以设计出来的程序完全不能用~~~而且,书中都是讲语句的具体使用办法,例如always @(),但是什么时候用always,几个always之间、时序电路、逻辑电路、任务与函数什么时候用,却没有一本书能讲清楚。

这个笔记详细写了这些思路的问题,分享给新手看看,学习一种思路~~先记下来:1、不使用初始化语句;2、不使用延时语句;3、不使用循环次数不确定的语句,如:forever,while等;4、尽量采用同步方式设计电路;5、尽量采用行为语句完成设计;6、always过程块描述组合逻辑,应在敏感信号表中列出所有的输入信号;7、所有的内部寄存器都应该可以被复位;8、用户自定义原件(UDP元件)是不能被综合的。

一:基本Verilog中的变量有线网类型和寄存器类型。

线网型变量综合成wire,而寄存器可能综合成WIRE,锁存器和触发器,还有可能被优化掉。

二:verilog语句结构到门级的映射1、连续性赋值:assign连续性赋值语句逻辑结构上就是将等式右边的驱动左边的结点。

因此连续性赋值的目标结点总是综合成由组合逻辑驱动的结点。

Assign语句中的延时综合时都将忽视。

2、过程性赋值:过程性赋值只出现在always语句中。

阻塞赋值和非阻塞赋值就该赋值本身是没有区别的,只是对后面的语句有不同的影响。

建议设计组合逻辑电路时用阻塞赋值,设计时序电路时用非阻塞赋值。

过程性赋值的赋值对象有可能综合成wire, latch,和flip-flop,取决于具体状况。

如,时钟控制下的非阻塞赋值综合成flip-flop。

过程性赋值语句中的任何延时在综合时都将忽略。

建议同一个变量单一地使用阻塞或者非阻塞赋值。

3、逻辑操作符:逻辑操作符对应于硬件中已有的逻辑门,一些操作符不能被综合:===、!==。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

大唐电信FPGA/CPLD数字电路设计经验分享(1)
 在数字电路的设计中,时序设计是一个系统性能的主要标志,在高层次设计方法中,对时序控制的抽象度也相应提高,因此在设计中较难把握,但在理解RTL电路时序模型的基础上,采用合理的设计方法在设计复杂数字系统是行之有效的,通过许多设计实例证明采用这种方式可以使电路的后仿真通过率大大提高,并且系统的工作频率可以达到一个较高水平。

1 数字电路设计中的几个基本概念:
1.1 建立时间和保持时间:
 建立时间(setup TIme)是指在触发器的时钟信号上升沿到来以前,数据稳定不变的时间,如果建立时间不够,数据将不能在这个时钟上升沿被打入触发器;保持时间(hold TIme)是指在触发器的时钟信号上升沿到来以后,数据稳定不变的时间,如果保持时间不够,数据同样不能被打入触发器。

如图1 。

数据稳定传输必须满足建立和保持时间的要求,当然在一些情况下,建立时间和保持时间的值可以为零。

PLD/FPGA开发软件可以自动计算两个相关输入的建立和保持时间(如图2)
 图1 建立时间和保持时间关系图。

相关文档
最新文档