1、1 1第9章 数字电子系统设计及典型实例 第9章 数字电子系统设计及典型实例 9.1 数字电子系统的构成 9.2 数字电子系统设计基本流程 9.3 数字电子系统设计实例 2 2第9章 数字电子系统设计及典型实例 9.1 数字电子系统的构成数字电子系统的构成数字电子系统通过数字电路逻辑器件,以数字方式对信息进行处理、传送或存储,来实现其特定的、复杂的功能。从功能上,数字电子系统通常可以分为系统接口、数据处理器和控制器三个部分,如图9-1所示。3 3第9章 数字电子系统设计及典型实例 图9-1 数字电子系统的构成 4 4第9章 数字电子系统设计及典型实例 其中,系统接口是完成将物理量转化为数字量或
2、将数字量转化为物理量的功能部件,例如键盘、打印机、音响系统、显示系统等;数据处理器的主要功能是实现对数字信息的处理,在接受控制命令,执行相应动作的同时,还将自身的状态反馈给控制部分,其逻辑功能常常可分解为若干个子处理单元来完成,例如译码器、运算器等;控制器的功能则是接收外部输入信号,以及数据处理器反馈的信号,管理各个子系统的局部及整个系统按规定顺序工作。5 5第9章 数字电子系统设计及典型实例 一般情况下,系统接口、数据处理器可通过组合电路或时序电路构成;控制器由同步时序电路构成。而这些数字逻辑电路都可以通过可编程逻辑器件(CPLD/FPGA)来实现。随着可编程逻辑器件的集成度和功能的日益提高
3、,一个可编程逻辑器件芯片除了有丰富的数字逻辑资源外,还含有一个或多个主要功能模块(如CPU、数字信号处理器核和其他的专门处理功能模块)、嵌入式存储器功能块以及通用或专用I/O功能块等。这样,一个芯片就可以构成一个完整的数字电子系统(片上可编程系统SOPC,System on Programmable Chip)。6 6第9章 数字电子系统设计及典型实例 9.2 数字电子系统设计基本流程数字电子系统设计基本流程在现代电子系统设计领域,EDA技术已经成为电子系统设计的重要手段。基于EDA技术及VHDL的数字电子系统是采用自顶向下和层次化结构建模的方法来进行设计的,其基本的设计流程如下:7 7第9章
4、 数字电子系统设计及典型实例 1分析设计要求分析设计要求进行数字电子系统设计,首先要正确理解项目的任务、要求和指标。例如:设计一个数字电子钟系统,需要理解数字电子钟的基本功能,工作原理,输入、输出端口,显示方式,测试精度等相关知识,这些基本概念是提出设计方案的前提和依据,也是完成整个设计任务的关键。相关设计项目的技术资料可以通过搜寻相关网站或查阅参考文献完成。8 8第9章 数字电子系统设计及典型实例 2确定方案确定方案根据设计任务的总体框架、技术指标,找出可以实现设计任务的不同方案,然后从可行性、性能价格比、复杂度、可靠性、通用性、扩展性、工作速度、所需器件的资源、成本等多方面进行分析、计算和
5、比较,选择出合适、高效、稳定的设计方案。在方案确定中,需要考虑的一个关键因素是系统实现的最终硬件环境,也就是CPLD/FPGA器件的选型。选型一般采取两步走的方式:首先采用CPLD/FPGA适配板或开发板来实现既定功能,在设计项目确保验证无误后,再转化成实际的电子系统。9 9第9章 数字电子系统设计及典型实例 在选择硬件开发环境时需要考虑三个方面:一是适用目标芯片的型号以及开发系统的类别和型号;二是确认开发系统提供的输入端外围硬件资源(如独立或矩阵按键、键盘、晶振、A/D转化器等)是否需要扩展,稳定性如何;三是确认开发系统提供的输出端外围硬件资源,如数码管、液晶显示器、受控器、驱动器、D/A转
6、换器、扬声器、各种接插件等,判断是否需要扩展外围电路,同时这些硬件资源也是目标芯片锁定引脚的依据。10 10第9章 数字电子系统设计及典型实例 3细化设计方案细化设计方案确定设计方案后,需要把设计项目分解成若干个功能清晰、易于设计的模块,构成层次化设计方案的结构框图,再将结构框图从粗至细,步步细化,直到每个模块易于实现为止。要明确每一个模块的基本功能(任务)、输入/输出端口以及各模块间的接口信号、控制关系,使之合情合理,满足设计要求。11 11第9章 数字电子系统设计及典型实例 4. 设计模块电路设计模块电路设计模块电路时,首先需明确各模块的工作原理、设计思路。根据实际需要,可选取原理图或HD
7、L语言描述方式来实现。一个好的设计构思,应简单明了、结构清晰、易于扩充,这不仅能提高设计效率,而且能有好的设计方案。每完成一个模块设计,都要进行仿真测试,检验每一个模块能否实现预定的技术指标,及时发现问题并予以修正,确保设计工作顺利进行。12 12第9章 数字电子系统设计及典型实例 5设计顶层模块设计顶层模块顶层模块设计实际是将底层模块电路级联起来,形成整体电路。对顶层模块进行仿真测试时,如果顶层电路出现异常,问题大多来源于底层电路或总体设计方案,应及时排除故障,反复测试推敲。6适配下载适配下载根据选定的目标芯片的编程接口、编程模式、配置器件等,锁定管脚适配下载。13 13第9章 数字电子系统
8、设计及典型实例 7硬件验证硬件验证进行硬件验证的目的,一方面是实际检验目标芯片的逻辑功能,另一方面是检验系统电路的响应速度、带载能力、抗干扰能力、电能损耗等多项性能指标。只有对目标芯片编程下载成功并通过了硬件验证的设计项目才会是合格的项目。当然,对于不同的设计项目,进行硬件验证的方式、方法、手段都可能有所不同。8文件归档和撰写设计总结报告文件归档和撰写设计总结报告当硬件测试结果符合设计要求后,最后的工作即是文件归档和撰写设计总结报告。文件归档指将所有设计文件归纳整理,删除不必要的中间文件,保留最终版本的设计文件。14 14第9章 数字电子系统设计及典型实例 设计总结报告是设计者对整个设计进程的
9、工作业绩、收获体会的全面总结。在撰写设计总结报告时,其内容次序应尽量与设计过程一致。设计报告一般包括设计思路、电路结构选择依据、实现关键技术指标的理论依据和计算公式、核心模块的工作原理等,并辅以必要的整体/局部原理电路、仿真分析、HDL语言注释、各模块的端口名称定义、各图表的编号说明等。设计报告中对设计成果的检测方法和结果必须真实可靠,同时,对设计成果的不足之处以及改进措施也可以写进报告之中。设计总结报告的撰写,不仅可使设计者自身在理论分析、应用技术、实践能力上有所提高,也可为他人使用或者修改系统设计项目提供完整的第一手资料。15 15第9章 数字电子系统设计及典型实例 9.3 数字电子系统设
10、计实例数字电子系统设计实例本节以数字跑表的设计、交通信号灯控制系统的设计以及离线误码检测仪的设计共三个实例来进一步说明数字电子系统的设计。9.3.1 数字跑表的设计数字跑表的设计1设计要求设计要求数字跑表是体育比赛中常用的计时仪器。它使用简单、携带方便,通过按键控制计时的起点和终点,其主要技术指标是计时精度和计时范围。16 16第9章 数字电子系统设计及典型实例 本例设计的数字跑表计时精度为10毫秒,计时范围为0分00秒00毫秒59分59秒99毫秒,具有复位、开始计时、停止计时及显示等功能。2确定方案确定方案通过对设计要求的分析可以看出,数字跑表的核心功能就是控制、计时和显示。计时功能可以通过
11、计数器来实现,显示功能可以通过对8位数码管扫描控制来实现;而复位、开始计时、停止计时功能实际上是对计数器进行控制,可通过按键输入信号控制计数器是否清零、是否开始或停止计数来实现。由此可得出数字跑表的系统总体设计框图,如图9-2所示。17 17第9章 数字电子系统设计及典型实例 图9-2 数字跑表总体设计框图 18 18第9章 数字电子系统设计及典型实例 数字跑表的硬件验证环境可以先采用FPGA/CPLD适配板或开发板,当设计无误后,再选用最合适的芯片,设计PCB板来最终实现。下面将EDA综合实验箱作为开发平台进行设计。(1) 核心部分:由FPGA器件Cyclone 系列EP3C10E144C8
12、实现所有的逻辑功能。(2) 输入部分:以EDA综合实验箱提供的40 MHz的晶振时钟作为输入时钟信号,按需要进行不同的分频;使用EDA核心板上的按键SW0和SW1分别作为复位和开始计时/停止计时信号。(3) 输出部分:采用8位七段数码管分别对分、秒、百分之一秒进行显示,其格式如图9-3所示。19 19第9章 数字电子系统设计及典型实例 图9-3 数字跑表输出格式 2020第9章 数字电子系统设计及典型实例 3. 细化设计方案细化设计方案根据数字跑表的计时、控制、显示这三个功能,可以把FPGA设计方案进一步细化,按照功能来分割模块。(1) 计时功能:由稳定、准确的输入计数时钟和计数模块来实现。考
13、虑到设计指标要求跑表精度为0.01秒,那么计数器的时钟输入就应该是频率为100 Hz的脉冲,但EDA综合实验箱提供的时钟晶振是40 MHz,不能直接使用。所以要先设计一个分频系数是400000的分频器,该分频器的输出才能作为计数器的最低位的计数时钟信号。其次,计数模块设计应考虑跑表的计时范围(0分0秒00毫秒59分59秒99毫秒)。可以看出,需要6位计数输出,其中有两位是六进制形式(分和秒的十位),其余四位是十进制形式,即可通过4个模10计数器和2个模6计数器来实现,其中低一级的进位输出就是高一级的计数时钟信号。计数器模块构成如图9-4所示。21 21第9章 数字电子系统设计及典型实例 图9-
14、4 计数器模块构成图 2222第9章 数字电子系统设计及典型实例 (2) 按键控制功能:通过开始计时/停止计时、复位两个按键来控制计数器的工作状态。复位按键端口直接接到计数器的清零端rst即可实现复位。开始计时/停止计时按键可通过控制计数器的使能端en来实现对计数器的控制,当en取值为“0”时,计数器开始计数;反之,则停止计数。但是此按键输入需要先经过消抖处理,否则容易误判按键键值;然后再进行信号转化。2323第9章 数字电子系统设计及典型实例 (3) 显示功能:使用8位数码管来显示计时结果。根据EDA综合实验箱的硬件结构,数码管采用动态扫描显示的方式,使用一个频率是1kHz的扫描信号扫描数码
15、管,实现对6位已经锁存的计数结果以及分割符“”和小数点“.”的扫描输出。根据上述分析,将具体功能整合后数字跑表的原理框图如图9-5所示。可以看出,数字跑表主要包含:时钟分频模块、使能控制模块、计数模块、显示控制模块四个模块。2424第9章 数字电子系统设计及典型实例 图9-5 数字跑表的原理框图 2525第9章 数字电子系统设计及典型实例 4模块设计模块设计1) 时钟分频模块时钟分频模块的功能是将实验箱提供的40MHz的晶振信号进行分频,产生用于数码管扫描的1kHz的扫描时钟clk_s,以及用于计数器模块进行计数的100Hz的计数时钟clk_c。时钟分频模块的VHDL源代码见例9-1,仿真结果
16、见图9-6。2626第9章 数字电子系统设计及典型实例 【例9-1】2727第9章 数字电子系统设计及典型实例 2828第9章 数字电子系统设计及典型实例 图9-6 分频模块仿真波形 2929第9章 数字电子系统设计及典型实例 2) 计数模块计数模块由4个十进制计数器和2个六进制计数器构成,低一级的计数进位信号作为高一级的计数器的时钟信号,结构如图9-4所示。这里先分别构造十进制计数器(见例9-2)和六进制计数器(见例9-3)。图9-7是十进制计数器的仿真结果,图9-8是六进制计数器的仿真结果。3030第9章 数字电子系统设计及典型实例 【例9-2】31 31第9章 数字电子系统设计及典型实例
17、 3232第9章 数字电子系统设计及典型实例 图9-7 十进制计数器仿真结果 3333第9章 数字电子系统设计及典型实例 【例9-3】3434第9章 数字电子系统设计及典型实例 3535第9章 数字电子系统设计及典型实例 图9-8 六进制计数器仿真结果 3636第9章 数字电子系统设计及典型实例 在计数器设计完成后就可以直接调用它们完成计数模块的设计,可以采用原理图的形式或VHDL元件例化的形式。图9-9采用原理图的形式调用计数器,例9-4采用元件例化的形式调用计数器。计数器元件图如图9-10所示,有3个输入端和6个计数输出端。计数器总体设计仿真结果见图9-11和图9-12。3737第9章 数
18、字电子系统设计及典型实例 【例9-4】3838第9章 数字电子系统设计及典型实例 3939第9章 数字电子系统设计及典型实例 图9-9 计数模块设计原理图 4040第9章 数字电子系统设计及典型实例 图9-10 计数器元件图 clk_crstenmsi3.0msh3.0sl3.0sh3.0ml3.0mh3.0cntinst41 41第9章 数字电子系统设计及典型实例 图9-11 计数模块仿真结果(1)4242第9章 数字电子系统设计及典型实例 图9-12 计数模块仿真结果(2) 4343第9章 数字电子系统设计及典型实例 3) 显示控制模块显示控制模块的目的是控制数码管按设计要求正确显示计时结
19、果。数码管以发光二极管作为字段来进行显示,分为共阴和共阳两种,其差别在于:共阴数码管的发光二极管的阴极连接在一起,而阳极对应各段分别控制;共阳数码管则刚好相反,发光二极管的阳极连接在一起,阴极对应各段分别控制。5.5.4节中已对数码管电路和显示编码进行了讲解,这里不再赘述。4444第9章 数字电子系统设计及典型实例 EDA综合实验箱采用共阴数码管,且8位数码管的段选信号是连接在一起的,即只能采用动态扫描的形式进行显示。位选信号以一定的扫描速度依次选通数码管,即驱动数码管轮流进行显示,利用发光二极管的余辉与人眼的视觉暂存作用,使人眼感觉数码管是同时进行显示的。显示控制模块可分为两个子模块:译码子
20、模块和扫描子模块。译码子模块实现4位二进制计数结果与对应数码管各段编码的转换;扫描子模块则通过1 kHz的扫描信号依次选中数码管,并决定该位数码管显示的数字。4545第9章 数字电子系统设计及典型实例 (1) 译码子模块。译码子模块将输入的4位二进制计数结果转化为对应的数码管编码,VHDL代码见例9-5。其仿真结果如图9-13和图9-14所示。由图9-14可以看出,当输入数字是除09以及分隔符外,均不显示。4646第9章 数字电子系统设计及典型实例 【例9-5】4747第9章 数字电子系统设计及典型实例 4848第9章 数字电子系统设计及典型实例 图9-14 译码子模块仿真结果(2)图9-13
21、 译码子模块仿真结果(1)4949第9章 数字电子系统设计及典型实例 (2) 扫描子模块。扫描子模块利用时钟分频模块产生的分频输出信号clk_s作为扫描信号,依次选中每个数码管,控制位选信号。同时还决定当不同数码管选中时,该数码管显示哪一位计数结果,如分高位mh、分低位ml等。扫描子模块VHDL代码见例9-6,仿真结果见图9-15。5050第9章 数字电子系统设计及典型实例 【例9-6】51 51第9章 数字电子系统设计及典型实例 5252第9章 数字电子系统设计及典型实例 图9-15 扫描子模块仿真结果 5353第9章 数字电子系统设计及典型实例 (3) 显示控制模块总体设计。显示控制模块由
22、译码子模块和扫描子模块组成,可采用 VHDL例化语句(见例9-7)或原理图的形式将它们连接起来。原理图的形式请读者自行完成。显示控制模块元件如图9-16所示。5454第9章 数字电子系统设计及典型实例 【例9-7】5555第9章 数字电子系统设计及典型实例 5656第9章 数字电子系统设计及典型实例 图9-16 显示控制模块元件图 clk_smsl3.0msh3.0sl3.0sh3.0ml3.0mh3.0seg7.0dig7.0displayinst75757第9章 数字电子系统设计及典型实例 4) 使能控制模块由于使能按键信号是单个脉冲信号,而计数器要持续计数所需的使能信号是持续的电平,因此
23、,使能控制模块的功能是对输入的开始计时/停止计时按键信号进行处理,使之变成能直接控制计数器模块的使能信号。另外,由于按键是一种机械开关(单个按键工作原理见图9-17),核心部件是弹性金属簧片,在开关切换的瞬间(即按键开关按下或松开时)会在触点出现来回弹跳的现象,如图9-18所示。弹跳现象引起的信号抖动会造成电路的误判,从而影响系统的正确性。一般而言,抖动的时间是510 ms。所以,使能控制模块首先需要对按键信号进行消除抖动处理,然后再完成信号的转换。5858第9章 数字电子系统设计及典型实例 图9-17 按键工作原理 5959第9章 数字电子系统设计及典型实例 图9-18 按键抖动波形 606
24、0第9章 数字电子系统设计及典型实例 消除按键抖动有多种方法,如:计数器型消抖、D触发器型消抖、状态机消抖等。由于篇幅有限,这里不再详细阐述,可参考EDA技术与VHDL设计实验指导一书实验9。例9-8采用计数器型消抖的方法来消除按键的抖动。计数时钟采用时钟分频模块的1 kHz分频输出信号clk_s,即一次计数周期为1 ms,从0计数到15共计数16次,延时时间16 ms,满足抖动时间要求。仿真结果见图9-19和图9-20。消除抖动后,按下一次按键key_en,输出使能端en_out为“1”,再按下一次,en_out为“0”。 61 61第9章 数字电子系统设计及典型实例 【例9-8】6262第
25、9章 数字电子系统设计及典型实例 6363第9章 数字电子系统设计及典型实例 图9-20 使能控制模块仿真结果(2) 图9-19 使能控制模块仿真结果(1) 6464第9章 数字电子系统设计及典型实例 5顶层电路设计顶层电路设计将时钟分频、计数器、显示控制以及使能控制4个模块连接起来,即可构成顶层电路。顶层电路设计既可采用原理图的形式,如图9-21所示;也可采用VHDL元件例化的形式。请读者自行完成元件例化实现的顶层电路设计。顶层电路的仿真与各功能模块的仿真类似,但由于时钟初值为40 MHz,与仿真时间(几秒)相差过大,导致仿真速度过慢,这里不再展示顶层原理仿真结果。6565第9章 数字电子系
26、统设计及典型实例 图9-21 数字跑表顶层电路原理图 6666第9章 数字电子系统设计及典型实例 6适配下载适配下载系统设计在完成逻辑描述与仿真测试并确认达到设计要求后,需要下载到含有目标芯片的开发系统上,进行硬件验证。本例采用EDA综合实验箱,选用Altera公司的Cyclone 系列EP3C10E114C8作为FPGA目标芯片,外部输入时钟为40 MHz,清零、开始计时/停止计时按键采用实验箱核心板上的SW0、SW1两个按键,利用8个数码管显示计时输出。EDA综合实验箱共有07共8个模式,其中模式04是单片机模式,模式57是可编程逻辑器件模式,本例采用模式5,电路结构如图9-22所示。可以
27、看到,模式5包含8位数码管、8个发光二极管、3个时钟输入、独立按键SW0SW7、矩阵按键等硬件资源。具体引脚锁定见表9-1。6767第9章 数字电子系统设计及典型实例 图9-22 EDA综合实验箱模式5电路结构 6868第9章 数字电子系统设计及典型实例 表表9-1 数字跑表引脚锁定数字跑表引脚锁定 6969第9章 数字电子系统设计及典型实例 7硬件验证硬件验证硬件验证主要有两方面的工作:其一,检查按键功能是否满足要求;其二,观察数码管输出是否正确,是否达到预定要求。经测试,本例设计能够达到要求,计时结果如图9-23所示。7070第9章 数字电子系统设计及典型实例 图9-23 硬件验证结果 7
28、1 71第9章 数字电子系统设计及典型实例 8撰写设计报告撰写设计报告当硬件测试结果满足要求后,就需要撰写设计总结报告以对整个设计过程进行总结。报告内容包括:概述、任务书(设计要求)、目录、方案论证、系统电路设计、模块电路设计、成员分工及进度、结论与收获、参考文献等。设计报告有利于设计者总结设计过程,提升设计能力,也有利于其他设计者了解项目设计。7272第9章 数字电子系统设计及典型实例 9.3.2 十字路口交通信号灯控制系统的设计十字路口交通信号灯控制系统的设计1设计要求设计要求某个道路十字路口,在东西、南北两个方向设置红(R)、绿(G)、黄(Y)及左拐(L)四盏信号灯。绿灯亮时,准许车辆通
29、行;黄灯亮时,已越过停止线的车辆可以继续通行;红灯亮时,禁止车辆通行;左拐灯亮时,车辆允许左拐通行。四盏灯按合理的顺序亮灭,并将灯亮的时间以倒计时显示出来。南北方向是主干道,车流量大,因此南北方向通行的时间比东西方向要长一些。交通灯信号系统工作状态见表9-2 ,其中“1”表示灯亮,“0”表示灯灭。7373第9章 数字电子系统设计及典型实例 表表9-2 交通灯信号系统工作状态表交通灯信号系统工作状态表 7474第9章 数字电子系统设计及典型实例 2确定方案确定方案根据交通灯工作规则及设计要求,整个系统可由三个模块构成,它们分别是显示模块、倒计时模块和控制模块,如图9-24所示。(1) 显示模块:
30、分两部分,一是由七段数码管组成的倒计时显示器,每个方向需要2个;二是由发光二极管代替交通灯,每个方向需要4个。(2) 倒计时模块:每个方向各有一组,显示交通灯剩余点亮的时间(两位)。(3) 控制模块:交通灯核心,控制交通灯按工作顺序自动变换,同时控制倒计时模块工作。每当倒计时回零时,控制模块接收计时时间到的信号,并控制交通灯进入下一个工作状态。7575第9章 数字电子系统设计及典型实例 图9-24 交通灯控制系统的设计方案 7676第9章 数字电子系统设计及典型实例 由于控制模块和倒计时模块是相互制约的关系,所以,为减少模块间的数据传送,可以将两者合并为控制模块。为保证倒计时的准确性,控制模块
31、需要引入基准时钟,可将基准时钟分频得到秒时钟,或者直接引入秒脉冲作为倒计时以及显示模块的基准时钟。其设计与9.3.1节中的时钟分频模块相同,这里就不详细阐述了。7777第9章 数字电子系统设计及典型实例 3模块设计模块设计(1) 控制模块。根据交通灯控制系统的工作规则,控制模块可采用有限状态机的方式来设计,共有如图9-25所示的8个工作状态。在每个状态下,倒计时模块进行倒计数,当倒计数为零时,进入下一个状态。初态设为s0。7878第9章 数字电子系统设计及典型实例 图9-25 交通灯控制模块状态转移图 7979第9章 数字电子系统设计及典型实例 当南北方向进行绿灯(40s)黄灯(5s)左拐灯(
32、15s)黄灯(5s)红灯的变换过程中,东西方向一直为红灯,两位倒计时时间为65s;反之,当东西方向进行绿灯(30s)黄灯(5s)左拐灯(15s)黄灯(5s)红灯的变换过程中,南北方向一直为红灯,两位倒计时时间为55s。因此,在设计时,还需要考虑某个方向一直为红灯时的倒计时情况,即东西方向为65s,南北方向为55s,倒计时结束后,红灯变为绿灯。8080第9章 数字电子系统设计及典型实例 控制模块在每个状态下的输出,都送到显示模块中进行显示。其中一个是两位的倒计时时间,东西方向高位为time_ew_h3.0、低位为time_ew_l3.0,南北方向高位为time_sn_h3.0、低位为time_s
33、n_l3.0。 另一个是交通指示灯的显示,分成南北方向和东西方向两组。而每一组中的两个方向(南和北、东和西)显示完全相同。所以,四个方向上共有16个指示灯(每个方向4个)。为了便于区分和说明,表9-3用字母对各个方向上指示灯的信号进行了命名。81 81第9章 数字电子系统设计及典型实例 表表9-3 各个方向上指示灯的信号名称各个方向上指示灯的信号名称8282第9章 数字电子系统设计及典型实例 控制模块的VHDL代码见例9-9。【例9-9】8383第9章 数字电子系统设计及典型实例 8484第9章 数字电子系统设计及典型实例 8585第9章 数字电子系统设计及典型实例 8686第9章 数字电子系
34、统设计及典型实例 8787第9章 数字电子系统设计及典型实例 8888第9章 数字电子系统设计及典型实例 8989第9章 数字电子系统设计及典型实例 9090第9章 数字电子系统设计及典型实例 91 91第9章 数字电子系统设计及典型实例 9292第9章 数字电子系统设计及典型实例 9393第9章 数字电子系统设计及典型实例 9494第9章 数字电子系统设计及典型实例 9595第9章 数字电子系统设计及典型实例 图9-26是控制模块的仿真波形,从中可以看出南北方向和东西方向指示灯的变换及倒计时功能都基本上满足设计要求。(2) 显示模块。显示模块中,在每个方向上用两个七段数码管显示倒计时时间,共
35、需8个数码管。本例显示模块同样包含译码子模块和扫描子模块,其设计与9.3.1节中显示控制模块的设计是类似的,这里不再赘述。另外,每个方向上的四盏交通指示灯,可利用发光二极管来充当。9696第9章 数字电子系统设计及典型实例 图9-26 控制模块仿真波形 9797第9章 数字电子系统设计及典型实例 4顶层电路设计顶层电路设计顶层电路设计仍然可以以图形方式或者以例化语句的方式将显示模块和控制模块连接起来。请读者自行完成顶层电路的设计。5适配下载及硬件验证适配下载及硬件验证仍然利用EDA综合实验箱来验证设计的正确与否。4个方向中,南北方向和东西方向的指示是完全相同的,所以各用4个发光二极管就可以了。
36、仍然选择模式5,锁定引脚后,编译适配下载,进行硬件测试验证。请读者自行完成引脚锁定、下载和硬件验证。6设计总结设计总结(略)。9898第9章 数字电子系统设计及典型实例 9.3.3 离线误码检测仪的设计离线误码检测仪的设计1设计要求设计要求设计一个离线误码检测仪电路,用来检测通信传输系统或设备中的误码情况。2确定方案确定方案1) 误码检测原理在通信过程中,无论是设备故障、传播衰落、码间干扰、邻近波道干扰等因素都可能造成通信系统性能恶化甚至造成通信中断,其结果都可以通过误码的形式表现出来。误码测试仪就是通过检测数据传输系统的误码性能指标对其系统传输质量进行评估的基本测量仪器。9999第9章 数字
37、电子系统设计及典型实例 误码测试的方法可分为两大类:中断通信业务的误码测试和不中断通信业务的误码测试。前者主要用于产品调试、性能鉴定、系统工程校验、通信电路的定期维护和检修;而后者主要用于系统运行的质量监测、可靠性统计等。本例要设计的离线误码检测仪就是属于中断通信业务的误码测试。它不依赖系统信道,可以独自产生序列,并利用自身产生的序列对数字信道进行误码测试。100100第9章 数字电子系统设计及典型实例 离线误码检测仪的工作过程可概括为以下几个步骤:(1) 发送端的码型发生器产生一定的码型测试信号,作为待测系统的输入信号,使其通过待测通信系统构成的信道;(2) 接收端接收待测系统的输出信号,并
38、从中提取位同步信号;(3) 产生与码型测试信号相同的码型,且初始相位与接收码流序列同步的本地码序列;(4) 将本地码序列与接收码序列(待测系统的输出信号)逐个进行比较,若不相同,说明有误码,输出误码脉冲信号;(5) 对误码脉冲信号进行统计,并将其结果显示出来。101101第9章 数字电子系统设计及典型实例 2) 误码检测功能模块由误码检测的工作过程可以将离线误码检测仪分成如图9-27所示的几个功能模块。(1) 发送部分:包含码型发生器和接口码型变换器两个功能模块。 码型发生器用来产生测试用序列信号。但这种信号通常是NRZ码的数字信号,并不适合在实际的信道中传输,因此,要把它转换成待测系统所需要
39、的接口信号。 接口码型变换器就是将测试信号变成与待测设备相同的接口信号。102102第9章 数字电子系统设计及典型实例 图9-27 离线误码检测仪的工作原理方框图 103103第9章 数字电子系统设计及典型实例 (2) 接收部分:包含位同步模块、序列同步模块、误码检测模块和显示模块。 位同步模块的功能是从待测系统接收的码流中提取时钟位同步信号。 序列同步模块用于实现本地码流序列和接收到的码流序列的同步,并源源不断地产生本地序列。 误码检测模块则是将本地码序列和接收到的数据码流序列进行比较,检测是否产生了误码。一旦检测到误码,计数器就将误码个数加1。 显示模块用来显示误码情况。104104第9章
40、 数字电子系统设计及典型实例 待测系统的接口信号视不同系统或不同设备而有所不同,且位同步模块设计的方式和复杂程度也直接取决于其接口类型(因为有的接口信号含时钟分量信息较丰富,很容易提取时钟信号,有的则不然,通常采取的做法是利用锁相环来实现)。由于篇幅所限,在此就省略了接口码型变换器和位同步模块的设计,发送部分直接将NRZ码和时钟信号送入待测系统中,而接收部分接收的信号也是从待测系统发来的NRZ码和时钟信号。简化的离线误码检测仪的工作原理方框图如图9-28所示。105105第9章 数字电子系统设计及典型实例 图9-28 简化的离线误码检测仪的工作原理方框图 106106第9章 数字电子系统设计及
41、典型实例 3细化设计方案细化设计方案根据离线误码检测仪的工作原理,进一步细化设计方案。(1) 码型发生器可产生用于测试的信号。在实际应用中,往往可以有多种选择。常用的有:带不同周期长度的伪随机序列码、带一定帧结构的序列码以及一些规则序列码等。本例采用的是伪随机序列码。在测试的过程中,为了使测试结果尽可能真实地反映被测系统的性能,测试数据应该是0、1等概且相互独立的随机数字序列,具有与噪声相似的性质。但是,真正的随机信号和噪声是不能重复再现和产生的,所以只能产生一种周期性的脉冲信号来近似随机噪声,即伪随机序列。本例中采用的 107107第9章 数字电子系统设计及典型实例 m序列码即伪随机序列,是
42、由带线性反馈的移位寄存器产生的周期最长的一种序列。虽然是周期信号,但它具有类似于随机信号较好的自相关特性。m序列的产生比较简单,利用带线性反馈的r级移位寄存器就可以产生长度为2r-1的m序列,如图9-29所示。其中,Cr,Cr-1,C0为反馈系数,也是特征多项式系数。这些系数的取值为“1”或“0”,“1”表示该反馈支路连同,“0”表示该反馈支路断开。108108第9章 数字电子系统设计及典型实例 图9-29 移位寄存器产生m序列的结构 109109第9章 数字电子系统设计及典型实例 r级移位寄存器的反馈路径由m序列的特征多项式决定,m序列特征多项式的一般表达式为本例取该伪随机序列发生器的特征多
43、项式为即产生长度为215-1的m序列。0011223311SSRG)(xCxCxCxCxCxCxfrrrr014141515SSRG)15(CxCxCf110110第9章 数字电子系统设计及典型实例 (2) 序列同步模块。由于已知发送部分的周期性m序列的产生过程,在接收部分本地也可以产生相同的m序列。如果被测的信道或系统无误码,接收的序列码与本地产生的序列码应该完全相同;如果有误码,对序列周期内的码元一一比较,就可以检测出误码的个数。但进行误码检测时,首先本地序列和接收序列应该以一个周期的同一位置为起点开始比较。序列同步模块的作用就是在误码检测的序列比较前进行序列同步,使本地m序列与发送端的m
44、序列初始相位相同。111111第9章 数字电子系统设计及典型实例 常见的序列同步方法有滑动相关法、序列相关法和SAW器件捕捉法等。但是这些方法都有实现结构复杂、同步时间长等缺点。例如:滑动相关法的基本原理就是将本地的m序列发生器产生的m序列和所接收的m序列进行逐位比较,若两个m序列同步,则比较器输出传输误码;若两m序列不同步,则比较器输出的是由于失步造成的误码。由于失步造成的误码较大(根据m序列的特性,其误码率应为0.5),因此可根据误码率门限来区分检测系统是否失步,若失步,则让本地m序列发生器等待一个位时钟周期,依次逐位比较,并逐位控制本地m序列发生器的等待时间,直至两序列完全同步。这种方法
45、如果顺利的话,可以12个时钟周期即取得同步;但如果本地序列和接收序列的初始相位相差很大的话,可能就需要成千上万个时钟周期才能同步了。 112112第9章 数字电子系统设计及典型实例 为了使误码检测电路能在不知发端序列发生器的初始状态的情况下实现序列的快速同步,本例采用图9-30所示的序列同步模块电路来实现。113113第9章 数字电子系统设计及典型实例 图9-30 序列同步模块及误码检测模块框图 114114第9章 数字电子系统设计及典型实例 由于m序列的下一个存储器状态组合仅取决于当前的状态组合,也就是说每一个存储器中的m序列状态组合都是相同的,只是初始相位有所差异而以,所以在启动误码检测电
46、路时,开关S先接到A点,这样就形成了一个开环系统,来自码型发生器的伪随机序列载入到15个移位寄存器中。当15个移位寄存器存满以后,开关控制电路将开关S接到B点,进行正式测量。115115第9章 数字电子系统设计及典型实例 由于m序列的下一个状态仅取决于当前状态,所以如果最初接收到的15个码元都是正确的,那么就认为达到了预同步。为了防止假同步,规定如果误码检测模块检测到的误码值在连续的10个码元周期内都没有增加,那么就认为序列同步,否则需要重新进行同步操作,即开关再次接到A点,重复以上过程,直到同步为止。采用这一方法的优点是可大大缩短序列同步所需的时间。116116第9章 数字电子系统设计及典型
47、实例 (3) 误码检测模块。误码检测模块主要由误码计数器组成,序列同步后,从待测系统中接收到的序列与本地m序列直接进行一一比较,当出现误码时,误码计数器自动加1,计数结果就可以送到误码显示模块进行显示了。由于序列同步模块要防止伪同步,需要进行误码检测,所以可以将序列同步模块和误码检测模块合并到一起来进行设计。117117第9章 数字电子系统设计及典型实例 (4) 显示模块。可以采用七段数码管对误码个数进行显示。也可以对一段时间的误码进行统计,以误码率的形式显示出来。显示部分的电路在前面的例子中已经说明,这里就不详细阐述了。综上所述,实际上要设计的主要有两个功能模块:m序列码型发生器模块和序列同
48、步与误码检测模块。118118第9章 数字电子系统设计及典型实例 4模块设计模块设计1) m序列码型发生器模块本例中,假设信号速率为2048 kbit/s,m序列的特征多项式为采用15个D触发器构成线性反馈移位寄存器进行设计,在系统清零后,D触发器输出状态均为低电平,为了避免m序列发生器输出全“0”信号,对最高位进行了置1操作。具体的VHDL代码见例9-10。014141515SSRG)15(CxCxCf119119第9章 数字电子系统设计及典型实例 【例9-10】120120第9章 数字电子系统设计及典型实例 由于m序列的最长周期是215-1=32767,可以通过仿真看其波形是否正确,因为篇
49、幅有限,这里就不阐述了。121121第9章 数字电子系统设计及典型实例 2) 序列同步及误码检测模块根据序列同步的工作过程,序列同步模块可以进一步细化成如图9-31所示的序列同步的工作流程图。序列同步时总共有三种工作状态。(1) 开始状态。start_1信号处于低电平,接收系统处于停滞状态,当start_1信号为高电平时,发端和收端实现了互联,接收来自被测系统的信号rxdata,进入下一状态。(2) 开关S接到A点状态。将接收的信号rxdata一一装载入本地m序列的移位寄存器rreg中,当计数器rq_a由0计数到14时,表示装载完毕,set信号由低电平变为高电平,进入下一状态。122122第9
50、章 数字电子系统设计及典型实例 图9-31 序列同步流程图 123123第9章 数字电子系统设计及典型实例 (3) 开关S接到B点状态。开始误码检测过程,如果在连续10个码元(用rq_b计数器进行计数)周期内误码计数器的值都没有增加,说明序列已经同步(信号sb由0变成1);否则,back信号出现一个高电平,使set信号由高电平变为低电平,即开关S重新接到A点,重复装载和序列同步的过程。确认序列同步后(信号sb=1),将接收的信号与本地m序列进行逐位比较,如果接收信号出现一个误码,误码计数器自动加1。序列同步及误码检测模块的VHDL代码见例9-11。124124第9章 数字电子系统设计及典型实例