数字逻辑电路设计经验
数字逻辑综合设计实验报告

数字逻辑综合设计实验报告本次数字逻辑综合设计实验旨在通过集成数字电路设计的各项技能,实现课程中所学的数字逻辑电路的设计和应用。
本文将从实验流程、实验过程和实验结果三个方面进行详细阐述。
一、实验流程1.确定实验内容和目的。
2.设计电路,包括逻辑门、时序电路和其他数字电路。
3.将电路图转化为器件链路图。
4.验证器件是否可以直接连接,确定器件安装方式。
5.安装器件,焊接电路板。
6.进行测试和调试,确认电路是否可以正常工作。
7.完成实验报告并提交。
二、实验过程1.确定实验内容和目的本次实验的内容是建立一个多功能的数字电路,实现数字电路的常见功能,包括计数器、时序控制器等。
本次实验的目的是通过对数字电路设计的综合应用,提高学生对数字电路设计的实践能力。
2.设计电路在确定实验内容和目的之后,我们需要对电路进行设计。
为了实现功能的复杂性,我们设计了一个包含多个逻辑门、计数器和其他数字电路的复杂电路。
3.将电路图转化为器件链路图在完成电路设计后,我们需要将电路图转化为器件链路图。
我们需要根据电路设计中使用的器件类型和数量来确定器件链路图。
在转化过程中,我们需要考虑器件之间的连接方式、信号传输、电源连接等因素。
4.验证器件是否可以直接连接,确定器件安装方式对于电路板的安装和器件之间的连接问题,我们需要进行仔细的测试和验证。
只有当所有器件都可以无误地连接到电路板上并正常工作时,我们才能确定最佳的器件安装方式。
5.安装器件,焊接电路板完成以上所有的测试和验证后,我们可以开始完成电路板的安装。
在安装过程中,我们需要仔细按照器件链路图和设计图来进行布线和连接。
最后,我们需要进行焊接,确保连接性能和电路板的可靠性。
6.进行测试和调试,确认电路是否可以正常工作完成器件安装和焊接后,我们需要进行测试和调试。
我们需要检查每个部分的性能和功能,以确保电路可以正常工作。
如果我们发现任何错误或问题,我们需要进行进一步的调试和修复。
7.完成实验报告并提交。
数字逻辑电路实验报告

数字逻辑电路实验报告数字逻辑电路实验报告引言:数字逻辑电路是现代电子科技中的重要组成部分,它广泛应用于计算机、通信、控制系统等领域。
本实验旨在通过实际操作,加深对数字逻辑电路原理的理解,并通过实验结果验证其正确性和可靠性。
实验一:基本逻辑门的实验在本实验中,我们首先学习了数字逻辑电路的基本组成部分——逻辑门。
逻辑门是数字电路的基本构建单元,它能够根据输入信号的逻辑关系,产生相应的输出信号。
我们通过实验验证了与门、或门、非门、异或门的工作原理和真值表。
以与门为例,当且仅当所有输入信号都为高电平时,与门的输出信号才为高电平。
实验中,我们通过连接开关和LED灯,观察了与门的输出变化。
实验结果与预期相符,验证了与门的正确性。
实验二:多位加法器的设计与实验在本实验中,我们学习了多位加法器的设计和实现。
多位加法器是一种能够对多位二进制数进行加法运算的数字逻辑电路。
我们通过实验设计了一个4位全加器,它能够对两个4位二进制数进行相加,并给出正确的进位和和结果。
实验中,我们使用逻辑门和触发器等元件,按照电路图进行布线和连接。
通过输入不同的二进制数,观察了加法器的输出结果。
实验结果表明,多位加法器能够正确地进行二进制数相加,验证了其可靠性。
实验三:时序电路的实验在本实验中,我们学习了时序电路的设计和实验。
时序电路是一种能够根据输入信号的时间顺序产生相应输出信号的数字逻辑电路。
我们通过实验设计了一个简单的时序电路,它能够产生一个周期性的脉冲信号。
实验中,我们使用计数器和触发器等元件,按照电路图进行布线和连接。
通过改变计数器的计数值,观察了脉冲信号的频率和周期。
实验结果表明,时序电路能够按照设计要求产生周期性的脉冲信号,验证了其正确性。
实验四:存储器的设计与实验在本实验中,我们学习了存储器的设计和实现。
存储器是一种能够存储和读取数据的数字逻辑电路,它在计算机系统中起到重要的作用。
我们通过实验设计了一个简单的存储器,它能够存储和读取一个4位二进制数。
数字逻辑实验报告

数字逻辑实验报告数字逻辑实验报告引言数字逻辑是计算机科学中的重要基础知识,通过对数字信号的处理和转换,实现了计算机的高效运算和各种复杂功能。
本实验旨在通过实际操作,加深对数字逻辑电路的理解和应用。
实验一:二进制加法器设计与实现在这个实验中,我们需要设计一个二进制加法器,实现两个二进制数的加法运算。
通过对二进制数的逐位相加,我们可以得到正确的结果。
首先,我们需要将两个二进制数输入到加法器中,然后通过逻辑门的组合,实现逐位相加的操作。
最后,将得到的结果输出。
实验二:数字比较器的应用在这个实验中,我们将学习数字比较器的应用。
数字比较器可以比较两个数字的大小,并输出比较结果。
通过使用数字比较器,我们可以实现各种判断和选择的功能。
比如,在一个电子秤中,通过将待测物品的重量与设定的标准重量进行比较,可以判断物品是否符合要求。
实验三:多路选择器的设计与实现在这个实验中,我们需要设计一个多路选择器,实现多个输入信号中的一路信号的选择输出。
通过使用多路选择器,我们可以实现多种条件下的信号选择,从而实现复杂的逻辑控制。
比如,在一个多功能遥控器中,通过选择不同的按钮,可以控制不同的家电设备。
实验四:时序电路的设计与实现在这个实验中,我们将学习时序电路的设计与实现。
时序电路是数字逻辑电路中的一种重要类型,通过控制时钟信号的输入和输出,实现对数据的存储和处理。
比如,在计数器中,通过时序电路的设计,可以实现对数字的逐位计数和显示。
实验五:状态机的设计与实现在这个实验中,我们将学习状态机的设计与实现。
状态机是一种特殊的时序电路,通过对输入信号和当前状态的判断,实现对输出信号和下一个状态的控制。
状态机广泛应用于各种自动控制系统中,比如电梯控制系统、交通信号灯控制系统等。
实验六:逻辑门电路的优化与设计在这个实验中,我们将学习逻辑门电路的优化与设计。
通过对逻辑门电路的布局和连接方式进行优化,可以减少电路的复杂性和功耗,提高电路的性能和可靠性。
数字逻辑实验报告

数字逻辑实验报告数字逻辑实验报告引言:数字逻辑是计算机科学中的基础知识,它研究的是数字信号的处理与传输。
在现代科技发展的背景下,数字逻辑的应用越来越广泛,涉及到计算机硬件、通信、电子设备等众多领域。
本实验旨在通过设计和实现数字逻辑电路,加深对数字逻辑的理解,并掌握数字逻辑实验的基本方法和技巧。
实验一:逻辑门电路设计与实现逻辑门是数字电路的基本组成单元,由与门、或门、非门等构成。
在本实验中,我们设计了一个4位全加器电路。
通过逻辑门的组合,实现了对两个4位二进制数的加法运算。
实验过程中,我们了解到逻辑门的工作原理,掌握了逻辑门的真值表和逻辑方程的编写方法。
实验二:多路选择器的设计与实现多路选择器是一种常用的数字逻辑电路,它可以根据控制信号的不同,从多个输入信号中选择一个输出信号。
在本实验中,我们设计了一个4位2选1多路选择器电路。
通过对多路选择器的输入信号和控制信号的设置,实现了对不同输入信号的选择。
实验过程中,我们了解到多路选择器的工作原理,学会了多路选择器的真值表和逻辑方程的编写方法。
实验三:时序逻辑电路的设计与实现时序逻辑电路是一种能够存储和处理时序信息的数字逻辑电路。
在本实验中,我们设计了一个简单的时序逻辑电路——D触发器。
通过对D触发器的输入信号和时钟信号的设置,实现了对输入信号的存储和传输。
实验过程中,我们了解到D触发器的工作原理,掌握了D触发器的真值表和逻辑方程的编写方法。
实验四:计数器电路的设计与实现计数器是一种能够实现计数功能的数字逻辑电路。
在本实验中,我们设计了一个4位二进制计数器电路。
通过对计数器的时钟信号和复位信号的设置,实现了对计数器的控制。
实验过程中,我们了解到计数器的工作原理,学会了计数器的真值表和逻辑方程的编写方法。
结论:通过本次实验,我们深入了解了数字逻辑的基本原理和应用方法。
通过设计和实现逻辑门电路、多路选择器、时序逻辑电路和计数器电路,我们掌握了数字逻辑实验的基本技巧,并加深了对数字逻辑的理解。
数字逻辑门电路的最小化与优化方法

数字逻辑门电路的最小化与优化方法数字逻辑门电路是现代电子领域中的重要组成部分,其通过逻辑门的组合和连接实现不同的功能。
在设计数字逻辑门电路时,最小化和优化方法起着关键作用,可以降低电路的复杂性、节省成本,并提高电路的性能和可靠性。
一、最小化方法在数字逻辑门电路的设计中,最小化方法是指通过对逻辑函数进行简化,将其转化为最简形式的过程。
常见的最小化方法有卡诺图法、奎因-麦克拉斯基方法和奇偶校验法。
1. 卡诺图法卡诺图法是一种图形化的最小化方法,它通过将逻辑函数的真值表绘制在二维平面上,并通过相邻元素的组合找到最简化的表达式。
卡诺图法适用于较小规模的电路设计。
2. 奎因-麦克拉斯基方法奎因-麦克拉斯基方法是一种代数化的最小化方法,它通过对逻辑函数进行代数化简化,减少逻辑函数中的项数和项的复杂性。
奎因-麦克拉斯基方法适用于较大规模的电路设计。
3. 奇偶校验法奇偶校验法是一种基于奇偶性质的最小化方法,它通过逐步删除逻辑函数中的冗余项,减少逻辑函数的复杂性。
奇偶校验法适用于具有规律性的逻辑函数设计。
二、优化方法电路的优化方法旨在通过改进电路的结构和功能,提高电路的性能指标,如速度、功耗和可靠性。
常见的优化方法有多级分解法、多输出设计和动态逻辑。
1. 多级分解法多级分解法是一种根据逻辑函数的特性进行逻辑门重组的方法,通过将多个逻辑门进行分组,减少逻辑门的数量和级数,从而提高电路的运行速度和性能。
2. 多输出设计多输出设计是一种通过合并不同逻辑函数的输出以减少逻辑门数量的方法。
通过共享逻辑门的输入和部分电路元件,可以实现多个逻辑功能,减少电路的复杂性和功耗。
3. 动态逻辑动态逻辑是一种基于时序特性的优化方法,它通过在电路中引入时钟信号和时序控制单元,实现电路的时序优化和节约功耗。
动态逻辑适用于高性能和低功耗的电路设计。
综上所述,数字逻辑门电路的最小化和优化方法对于电路设计具有重要意义。
通过最小化方法可以简化逻辑函数,减少电路的复杂性;而优化方法可以提高电路的性能和可靠性。
数字逻辑与电路设计

数字逻辑与电路设计数字逻辑与电路设计是计算机科学与工程领域中的重要基础学科,它涉及到计算机中数字信号的处理与传输,以及数字电路的设计与实现。
在如今信息技术高速发展的时代,数字逻辑与电路设计的知识变得尤为重要。
本文将介绍数字逻辑与电路设计的基本概念、应用领域以及设计流程。
一、数字逻辑的基本概念数字逻辑是计算机中用来处理和运算二进制信号的逻辑系统。
它以0和1来表示逻辑状态,通过与、或、非等逻辑门实现逻辑运算。
这些逻辑门可以组合成复杂的逻辑电路,实现各种数字运算、逻辑运算和控制功能。
数字逻辑中的基本元素包括逻辑门、触发器、计数器等。
逻辑门用来进行逻辑运算,包括与门、或门、非门等;触发器用来存储和传输数据,包括D触发器、JK触发器等;计数器用来计数和产生时序信号。
二、数字电路的应用领域数字电路广泛应用于计算机、通信、控制等领域,它是现代电子设备中的核心组成部分。
以下是数字电路在不同领域的几个典型应用:1. 计算机:数字电路在计算机中起到控制和运算的作用。
计算机的中央处理器、存储器、输入输出接口等都是由数字电路组成的。
2. 通信:数字电路在通信系统中负责信号的编码、解码和传输。
例如调制解调器、数字信号处理器等都是数字电路的应用。
3. 控制:数字电路用于各种自动控制系统。
例如数字控制器、工业自动化设备等都需要数字电路进行控制。
4. 显示:数字电路在显示技术中起到关键作用。
例如数码管、液晶显示屏等都是数字电路驱动的。
三、数字电路的设计流程数字电路的设计包括设计规格、逻辑设计、电路设计和验证等步骤。
下面是一个典型的数字电路设计流程:1. 设计规格:明确设计的需求和规范,包括功能要求、性能要求等。
2. 逻辑设计:根据设计规格,利用逻辑门和触发器等基本元件进行逻辑电路的设计。
可以使用逻辑图、真值表、状态转换图等进行描述和分析。
3. 电路设计:在逻辑设计的基础上,将逻辑电路转换为电路图。
选择适当的电子元件,进行连线和布局等。
数字逻辑电路实习报告心得

数字逻辑电路实习报告心得在过去的一段时间里,我有幸参加了数字逻辑电路实习课程。
通过这次实习,我对数字逻辑电路的设计和应用有了更深入的理解,同时也积累了宝贵的实践经验。
在这里,我想分享一下我的实习心得。
首先,实习让我明白了理论知识与实际操作的重要性。
在实习之前,我曾以为自己对数字逻辑电路有一定的了解,但真正动手实践时,才发现自己还有很多不足之处。
实习过程中,我不断回顾课堂所学,将理论知识与实际操作相结合,逐渐提高了自己的实践能力。
其次,实习过程中,我学会了如何阅读电路图和编写程序。
在实习项目中,我们需要根据电路图连接电路,并编写相应的程序来实现数字逻辑电路的功能。
通过不断尝试和调试,我逐渐掌握了阅读电路图的方法,并能够熟练地编写程序。
这为我以后从事电子技术领域的工作打下了坚实的基础。
此外,实习让我认识到团队协作的重要性。
在实习过程中,我们常常需要与同学合作完成项目。
通过相互交流、讨论和分工合作,我们共同解决问题,取得了良好的成果。
实习让我明白了,一个优秀的团队可以产生1+1>2的效果,团队合作是实现目标的关键。
实习还培养了我面对困难的勇气和解决问题的能力。
在实习过程中,我们遇到了许多预料之外的问题,如电路连接错误、程序编写错误等。
面对这些问题,我们没有退缩,而是在老师的指导下,积极寻找解决方案,最终克服了困难。
通过这次实习,我学会了如何面对困难,如何运用所学知识解决问题。
最后,实习使我对数字逻辑电路的应用有了更广泛的了解。
在实习过程中,我们设计了多功能数字钟、多谐振荡器等电路,这些电路在实际生活中有着广泛的应用。
实习让我认识到,数字逻辑电路不仅是一种理论,更是一种实用技术,它为我们的日常生活带来了许多便利。
总之,通过这次数字逻辑电路实习,我收获颇丰。
实习过程中,我提高了自己的实践能力、团队合作能力和解决问题的能力。
同时,我对数字逻辑电路的应用有了更深刻的认识。
我相信,这次实习对我未来的学习和工作将产生积极的影响。
数字逻辑电路实验报告

数字逻辑电路实验报告指导老师:班级:学号:姓名:时间:第一次试验一、实验名称:组合逻辑电路设计1二、试验目的:掌握组合逻辑电路的功能测试。
1、验证半加器和全加器的逻辑功能。
2、、学会二进制数的运算规律。
3、试验所用的器件和组件:三、74LS00 3片,型号二输入四“与非”门组件74LS20 1片,型号四输入二“与非”门组件74LS86 1片,型号二输入四“异或”门组件实验设计方案及逻辑图:四、/全减法器,如图所示:1、设计一位全加时做减法运时做加法运算,当M=1M决定的,当M=0 电路做加法还是做减法是由SCin分别为加数、被加数和低位来的进位,、B和算。
当作为全加法器时输入信号A分别为被减数,减数Cin、B和为和数,Co为向上的进位;当作为全减法时输入信号A 为向上位的借位。
S为差,Co和低位来的借位,1)输入/(输出观察表如下:(2)求逻辑函数的最简表达式函数S的卡诺图如下:函数Co的卡诺如下:化简后函数S的最简表达式为:Co的最简表达式为:2(3)逻辑电路图如下所示:、舍入与检测电路的设计:2F1码,用所给定的集成电路组件设计一个多输出逻辑电路,该电路的输入为8421为奇偶检测输出信号。
当电路检测到输入的代码大于或F2为“四舍五入”输出信号,的个数为奇数时,电路。
当输入代码中含1F1=1;等于5是,电路的输出其他情况F1=0 F2=0。
该电路的框图如图所示:的输出F2=1,其他情况输出观察表如下:(输入/0 1 0 0 1 01 0 1 0 0 11 1 1 0 0 01 0 1 1 1 11 0 0 1 0 11 0 1 0 0 11 0 0 1 1 01 1 1 0 1 11 0 1 1 0 011111求逻辑函数的最简表达式(2)的卡诺如下:函数F1 F2函数的卡诺图如下:的最简表达式为:化简后函数F2 的最简表达式为:F1)逻辑电路图如下所示;(3课后思考题五、化简包含无关条件的逻辑函数时应注意什么?1、答:当采用最小项之和表达式描述一个包含无关条件的逻辑问题时,函数表达式中,并不影响函数的实际逻辑功能。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
FPGA/CPLD数字逻辑电路设计经验2007-01-20 15:18摘要:在数字电路的设计中,时序设计是一个系统性能的主要标志,在高层次设计方法中,对时序控制的抽象度也相应提高,因此在设计中较难把握,但在理解RTL电路时序模型的基础上,采用合理的设计方法在设计复杂数字系统是行之有效的,通过许多设计实例证明采用这种方式可以使电路的后仿真通过率大大提高,并且系统的工作频率可以达到一个较高水平。
关键词:FPGA 数字电路 时序 时延路径 建立时间 保持时间1 数字电路设计中的几个基本概念:1.1 建立时间和保持时间:建立时间(setup time)是指在触发器的时钟信号上升沿到来以前,数据稳定不变的时间,如果建立时间不够,数据将不能在这个时钟上升沿被打入触发器;保持时间(hold time)是指在触发器的时钟信号上升沿到来以后,数据稳定不变的时间, 如果保持时间不够,数据同样不能被打入触发器。
如图1 。
数据稳定传输必须满足建立和保持时间的要求,当然在一些情况下,建立时间和保持时间的值可以为零。
PLD/FPGA开发软件可以自动计算两个相关输入的建立和保持时间(如图2)图1 建立时间和保持时间关系图注:在考虑建立保持时间时,应该考虑时钟树向后偏斜的情况,在考虑建立时间时应该考虑时钟树向前偏斜的情况。
在进行后仿真时,最大延迟用来检查建立时间,最小延时用来检查保持时间。
建立时间的约束和时钟周期有关,当系统在高频时钟下无法工作时,降低时钟频率就可以使系统完成工作。
保持时间是一个和时钟周期无关的参数,如果设计不合理,使得布局布线工具无法布出高质量的时钟树,那么无论如何调整时钟频率也无法达到要求,只有对所设计系统作较大改动才有可能正常工作,导致设计效率大大降低。
因此合理的设计系统的时序是提高设计质量的关键。
在可编程器件中,时钟树的偏斜几乎可以不考虑,因此保持时间通常都是满足的。
1.2 FPGA中的竞争和冒险现象信号在FPGA器件内部通过连线和逻辑单元时,都有一定的延时。
延时的大小与连线的长短和逻辑单元的数目有关,同时还受器件的制造工艺、工作电压、温度等条件的影响。
信号的高低电平转换也需要一定的过渡时间。
由于存在这两方面因素,多路信号的电平值发生变化时,在信号变化的瞬间,组合逻辑的输出有先后顺序,并不是同时变化,往往会出现一些不正确的尖峰信号,这些尖峰信号称为"毛刺"。
如果一个组合逻辑电路中有"毛刺"出现,就说明该电路存在"冒险"。
(与分立元件不同,由于PLD内部不存在寄生电容电感,这些毛刺将被完整的保留并向下一级传递,因此毛刺现象在PLD、FPGA设计中尤为突出)图2是一个逻辑冒险的例子,从图3的仿真波形可以看出,"A、B、C、D"四个输入信号经过布线延时以后,高低电平变换不是同时发生的,这导致输出信号"OUT"出现了毛刺。
(我们无法保证所有连线的长度一致,所以即使四个输入信号在输入端同时变化,但经过PLD内部的走线,到达或门的时间也是不一样的,毛刺必然产生)。
可以概括的讲,只要输入信号同时变化,(经过内部走线)组合逻辑必将产生毛刺。
将它们的输出直接连接到时钟输入端、清零或置位端口的设计方法是错误的,这可能会导致严重的后果。
所以我们必须检查设计中所有时钟、清零和置位等对毛刺敏感的输入端口,确保输入不会含有任何毛刺图2 存在逻辑冒险的电路示例图3 图2所示电路的仿真波形冒险往往会影响到逻辑电路的稳定性。
时钟端口、清零和置位端口对毛刺信号十分敏感,任何一点毛刺都可能会使系统出错,因此判断逻辑电路中是否存在冒险以及如何避免冒险是设计人员必须要考虑的问题。
如何处理毛刺我们可以通过改变设计,破坏毛刺产生的条件,来减少毛刺的发生。
例如,在数字电路设计中,常常采用格雷码计数器取代普通的二进制计数器,这是因为格雷码计数器的输出每次只有一位跳变,消除了竞争冒险的发生条件,避免了毛刺的产生。
毛刺并不是对所有的输入都有危害,例如D触发器的D输入端,只要毛刺不出现在时钟的上升沿并且满足数据的建立和保持时间,就不会对系统造成危害,我们可以说D触发器的D输入端对毛刺不敏感。
根据这个特性,我们应当在系统中尽可能采用同步电路,这是因为同步电路信号的变化都发生在时钟沿,只要毛刺不出现在时钟的沿口并且不满足数据的建立和保持时间,就不会对系统造成危害。
(由于毛刺很短,多为几纳秒,基本上都不可能满足数据的建立和保持时间)去除毛刺的一种常见的方法是利用D触发器的D输入端对毛刺信号不敏感的特点,在输出信号的保持时间内,用触发器读取组合逻辑的输出信号,这种方法类似于将异步电路转化为同步电路。
图4给出了这种方法的示范电路,图5是仿真波形。
如前所述,优秀的设计方案,如采用格雷码计数器,同步电路等,可以大大减少毛刺,但它并不能完全消除毛刺。
毛刺并不是对所有输入都有危害,例如D触发器的D输入端,只要毛刺不出现在时钟的上升沿并且满足数据的建立和保持时间,就不会对系统造成危害。
因此我们可以说D触发器的D输入端对毛刺不敏感。
但对于D触发器的时钟端,置位端,清零端,则都是对毛刺敏感的输入端,任何一点毛刺就会使系统出错,但只要认真处理,我们可以把危害降到最低直至消除。
下面我们就对几种具体的信号进行探讨。
1.3 清除和置位信号在FPGA的设计中,全局的清零和置位信号必须经过全局的清零和置位管脚输入,因为他们也属于全局的资源,其扇出能力大,而且在FPGA内部是直接连接到所有的触发器的置位和清零端的,这样的做法会使芯片的工作可靠、性能稳定,而使用普通的IO脚则不能保证该性能。
在FPGA的设计中,除了从外部管脚引入的全局清除和置位信号外在FPGA 内部逻辑的处理中也经常需要产生一些内部的清除或置位信号。
清除和置位信号要求象对待时钟那样小心地考虑它们,因为这些信号对毛刺也是非常敏感的。
在同步电路设计中,有时候可以用同步置位的办法来替代异步清0。
在用硬件描述语言的设计中可以用如下的方式来描述:异步清0的描述方法:process(rst,clk)beginif rst=’1’ thencount<=(others=>’0’);elsif clk’event and clk=’1’ thencount<=count 1;end if;end process;同步清0的描述方法:processbeginwait until clk’event and clk=’1’;if rst=’1’ thencount<=(others=>’0’);elsecount<=count 1;end if;end process;1.4 触发器和所存器:我们知道,触发器是在时钟的沿进行数据的锁存的,而所存器是用电平使能来锁存数据的。
所以触发器的Q输出端在每一个时钟沿都会被更新,而所存器只能在使能电平有效器件才会被更新。
在FPGA设计中建议如果不是必须那么应该尽量使用触发器而不是所存器。
那么在使用硬件描述语言进行电路设计的时候如何区分触发器和所存器的描述方法哪?其实有不少人在使用的过程中可能并没有特意区分过,所以也忽略了二者在描述方法上的区别。
下面是用VHDL语言描述的触发器和所存器以及综合器产生的电路逻辑图。
触发器的语言描述:processbeginwait until clk’event and clk=’1’;q<=d;end process;所存器的语言描述:process(en,d)beginif en=’1’ thenq<=d;end if;end process;由上述对Latch的描述可见,其很容易于选择器的描述相混淆,用VHDL 语言对选择器的描述方法如下:process(en,a,b)beginif en=’1’ thenq<=a;elseq<=b;end if;end process;2 FPGA/CPLD中的一些设计方法2.1 FPGA设计中的同步设计异步设计不是总能满足(它们所馈送的触发器的)建立和保持时间的要求。
因此,异步输入常常会把错误的数据锁存到触发器,或者使触发器进入亚稳定的状态,在该状态下,触发器的输出不能识别为l或0。
如果没有正确地处理,亚稳性会导致严重的系统可靠性问题。
另外,在FPGA的内部资源里最重要的一部分就是其时钟资源(全局时钟网络),它一般是经过FPGA的特定全局时钟管脚进入FPGA内部,后经过全局时钟BUF适配到全局时钟网络的,这样的时钟网络可以保证相同的时钟沿到达芯片内部每一个触发器的延迟时间差异是可以忽略不计的。
在FPGA中上述的全局时钟网络被称为时钟树,无论是专业的第三方工具还是器件厂商提供的布局布线器在延时参数提取、分析的时候都是依据全局时钟网络作为计算的基准的。
如果一个设计没有使用时钟树提供的时钟,那么这些设计工具有的会拒绝做延时分析有的延时数据将是不可靠的。
在我们日常的设计中很多情形下会用到需要分频的情形,好多人的做法是先用高频时钟计数,然后使用计数器的某一位输出作为工作时钟进行其他的逻辑设计。
其实这样的方法是不规范的。
比如下面的描述方法:processbeginwait until clk’event and clk=’1’;if fck=’1’ thencount<=(others=>’0’);elsecount<=count 1;end if;end process;processbeginwait until count(2)’event and count(2)=’1’ ;shift_reg<=data;end process;在上述的第一个process电路描述中,首先计数器的输出结果(count(2))相对于全局时钟clk已经产生了一定的延时(延时的大小取决于计数器的位数和所选择使用的器件工艺);而在第二个process 中使用计数器的bit2作为时钟,那么shift_reg相对于全局clk的延时将变得不好控制。
布局布线器最终给出的时间分析也是不可靠的。
这样产生的结果波形仿真如下图所示:正确的做法可以将第二个process这样来写。
processbeginwait until clk’event and clk=’1’ ;if count(2 downto 0)=”000” thenshift_reg<=data;end if;end process;或者分成两步来写:process(count)beginif count(2 downto 0)=”000” thenen<=’1’;elseen<=’0’;end if;end process;processbeginwait until clk’event and clk=’1’ ;if en=’1’ thenshift_reg<=data;end if;end process;这样做是相当于产生了一个8分频的使能信号,在使能信号有效的时候将data数据采样到shift_reg寄存器中。