580 likes | 758 Views
可编程逻辑器件( PLD )设计方案. 数字显示频率计的设计. 电气学院电工电子基础中心. 数字显示频率计的研制过程. 一、设计要求 —— 确定产品的性能指标. 二、设计步骤 —— 选择可行的方案,进行单元电路设计. 三、安装 ( 下载 ) 调试 —— 先进行单元电路的调试,然后进行产品的调试。. 四、总结整理 —— 实验总结报告. 一、设计要求. 用 PLD 器件 ispLSI1016 及 4 只 7 段动态显示数码管(一只用于量程显示)设计一只数字频率计,要求: 测频范围 10.0Hz ~ 9.99KHz ; 测量误差小于等于 1% 。
E N D
可编程逻辑器件(PLD)设计方案 数字显示频率计的设计 电气学院电工电子基础中心
数字显示频率计的研制过程 一、设计要求——确定产品的性能指标 二、设计步骤——选择可行的方案,进行单元电路设计 三、安装(下载)调试——先进行单元电路的调试,然后进行产品的调试。 四、总结整理——实验总结报告
一、设计要求 用PLD器件ispLSI1016及4只7段动态显示数码管(一只用于量程显示)设计一只数字频率计,要求: • 测频范围10.0Hz~9.99KHz; • 测量误差小于等于1%。 • 响应时间不大于15秒。 • 具有超量程显示功能。 • 频率计分成三个频段进行设计:
二、设计步骤 • 设计一个具有异步清零、计数/保持功能的10×10×10进制加法计数器。 • 设计频率计的控制电路,要求能产生10秒、1秒的闸门用相应的清零、锁存脉冲。 • 设计频率计的自动量程转换电路,要求能手动控制频段转换,超量程显示。将上述设计构成频率测量电路,并进行测试。 • 设计12位信号锁存电路、动态选通电路、显示电路、译码电路。构成一个完整的显示控制电路,并进行测试。 • 最终实现自动频段转换的3位数显频率计。
四、实验总结报告 • 频率计设计要求及方案分析。 • 频率计的整体设计思想及设计框图。 • 提供频率计单元电路(计数器、控制电路、自动量程转换电路、显示选通电路等)的具体设计说明、源程序及整体设计电路图。 • 频率计设计的重要调试过程,遇到具体问题的解决方法。 • 记录您设计的频率计的测频结果(高.中.低三频段),并对测频精度、响应速度及量程转换过程等作出分析。 • 您对扩大本频率计的功能.提高频率计的性能有何设想(要提供设计思路)? • 谈谈用PLD器件设计数字电路的体会,您认为用PLD器件较之用传统中规模数字器件设计数字系统有什么优缺点。 • 总结本次设计的收获、存在问题,并对选题、设计调试过程中的指导等方面提出您的意见与建议。
计 数 器 8 8 4 4 8 4 4 4 4 FX 整形 锁 存 器 译 码 电 路 & 8 锁存脉冲信号 控制电路 清零脉冲信号 闸门控制信号 原理框图(静态显示)
8 4 4 4 4 计 数 锁 存 器 FX 整形 显 示 电 路 译 码 电 路 & 扫描选择 量程控制信号 控制电路与 自动量程 清零锁存信号 闸门控制信号 原理框图(动态显示)
电路图 选通 1KHz 动态 显示 选通 译码器 显示模块 显 示 小数点 输入信号 锁存器 锁存器 锁存器 分频器 溢出 1Hz 计 数 器 计 数 器 计 数 器 控制电路 8Hz 自动量 程转换
电路单元 10×10×10进制计数器 控制电路 自动量程转换 10分频电路 频率测量电路 12位锁存器 动态显示选通电路 显示电路 显示译码电路 动态显示电路 数显频率计电路
十进制加法计数器 • 输入信号: CLK-输入脉冲; CLR-清零脉冲; C_H-保持信号(以后称为:闸门信号) (C_H=0保持, C_H=1允许计数)。 • 输出信号: QQ=Q3,Q2,Q1,Q0=[Q3..Q0]。 • 逻辑关系: 当C_H=0时,输出保持不变。 当C_H=1时,⑴输出<9,QQ=QQ+1。 ⑵输出≥9,QQ=0。
要点复习(一) • 赋值运算: • ⑴不带时钟的赋值(组合输出)运算符(=) • ⑵带时钟的赋值 (寄存输出)运算符(:=) • 管脚及节点属性: • ⑴组合信号输出‘COM’(例:a pin istype ‘com’;) • ⑵寄存器信号输出’REG’(例:a pin istype ‘reg’;) • 指示字的使用: • @Dcset(随意值的设置):用随意条件来帮助优化不完全规定的逻辑函数。 • 注意电路图的层次化 • 用文件扩展名来了解文件类型
要点复习(二) • 时序电路中的点扩充命令: .CLK-时钟输入(例:QQ.CLK=CLK;QQ的时钟信号为 CP) .AR-异步寄存器复位 (例:QQ.AR=CLR;QQ的异步复 位信号为CLR) .FB-寄存器反馈 (例:QQ:=QQ.FB+1;QQ输出+1) .LH-锁存器的锁存使能 (例:QQ.LH=LOCK;QQ的锁存 使能信号为LOCK) • 特殊常量: .C.-上升沿时钟输入 .X.-无关项 注意:特殊常量值用大小写均可,但是前后两个“.”不能省略!
要点复习(三) • 原理图中的符号修改: 在菜单中选取Edit\Symbol,选取需修改的符号,进入Symbol Editor图形编辑窗口,根据需要进行修改。 • 原理图中的图符编号修改: 在菜单中选取Add\Instance Name,根据需要进行修改。 • 原理图中的导线属性修改: 在菜单中选取Add\Net Name,根据需要进行修改。 • 原理图中的符号属性修改: 在菜单中选取Add\Symbol Attribute,根据需要进行修改。
要点复习(四) • 页面设置:File\Sheet Setup。 • 图符编辑:Edit\symble。 • 绘图顺序:Symble\Wire\Net Name\I/O Maker。 • 文件名与图符名:一定要有区别。 • 显示波形默认为十六进制。希望用二进制或十进制来检查。 • 每一个功能模块都要进行测试。 • 标识符对大小写敏感
十进制计数器.abv与waveform TEST_VECTORS([CLK,C_H,CLR]->QQ) @REPEAT 2 {[.C.,0,0]->.X.; } @REPEAT 12 {[.C.,1,0]->.X.; } @REPEAT 2 {[.C.,1,1]->.X.; } @REPEAT 3 {[.C.,0,1]->.X.; } @REPEAT 3 {[.C.,1,1]->.X.; }
10×10×10计数器测试矢量与仿真波形 TEST_VECTORS([CLK,C_H,CLR]->QQ) @REPEAT 2 {[.C.,0,0]->.X.; } @REPEAT 115 {[.C.,1,0]->.X.;} @REPEAT 2 {[.C.,1,1]->.X.; } @REPEAT 5 {[.C.,0,1]->.X.; } @REPEAT 10 {[.C.,1,1]->.X.; }
频率测量原理与方法 两种频率测量的方法: 1.直接测量法 即在一定闸门时间内测量被测信号的脉冲个数。直接测量法适合于高频信号的频率测量。 2.间接测量法 如周期测量法。周期测量法,首先测出被测信号的周期Tx ,然后经过倒数运算得到信号频率Fx=1/Tx 。为了保证低频信号(频率在几十Hz以下)的测频精度,最有效、方便的方法是周期测量法。
控制电路的设计 频率计的设计关键是控制电路的设计,控制电路产生频率测量所需的闸门、清零和锁存信号。这些信号具有一定的时序关系。 为了保证测量的精确性,在每次闸门信号变为高信号前,必须给计数器提供一个清零信号。当闸门信号为高电平时,计数器开始计数;当闸门信号为低电平时,计数器停止计数。 如果闸门宽度为1S,则闸门时间内计数器的计数值即为被测信号的频率;改变闸门宽度可以改变频率计的量程,闸门宽度越小,频率计的量程越大。另一种扩大量程的方法为:闸门宽度保持不变,对被测信号先进行分频,然后再对其测频。相对来说,后者更加容易实现。
控制电路原理图 • 输入信号: F1-1Hz信号;F8-8Hz信号;SET-量程选择控制信号。 • 输出信号: C_H-闸门信号;CLR-清零信号;LOCK-锁存信号。
控制电路原理 在控制模块(KZ)中,F8为8Hz的时钟输入;F1为1Hz的时钟输入。SEL为量程选择控制端,当SEL=0时, 8Hz时钟进入JSQ15模块;当SEL=1时,1Hz时钟进入JSQ15模块,经JSQ15分频模块和BMQ编码模块后,分别产生闸门时间为1秒和10秒的闸门信号(C_H),以及相应的清零信号(CRL)、锁存信号(LOCK); 分频器的分频数应满足:最大产生10秒闸门信号,及清零信号、锁存信号的时间。因此必须大于12分频,为了可靠起见,选择15分频。 编码器根据SEL信号,产生闸门时间为1秒(F8输入)或10秒(F1输入)的闸门信号,清零信号、锁存信号。以及它们之间的时序关系。
控制电路输出信号 • 闸门信号 当闸门信号为高电平时,计数器开始计数,反之计数器停止计数。改变闸门宽度可以改变频率计的量程,闸门宽度越小,频率计的量程越大。 • 清零信号 为了保证测频准确,在每次闸门信号开通前必须让计数器处在零状态,保证计数器每次都从零开始计数。 • 锁存信号 为了防止频率计的显示随着计数值的增加不断变化,不断闪烁。在计数器和显示、译码之间增加一级锁存电路。
CP脉冲 闸门信号 清零信号 锁存信号 闸门信号、清零信号及锁存信号时序关系 上图给出了一个典型的由频率为8Hz的时钟源产生的闸门信号、清零信号和锁存信号。其中闸门高电平时间为1秒,清零信号和锁存信号有效时间各为一个时钟周期。
计数器测试矢量与仿真波形 TEST_VECTORS(CLK->QQ) 0->.X.; @REPEAT 15{.C.->.X.;}
编码器的设计要点 • 选择信号,SEL=0,CLK=F8, SEL=1,CLK=F1。 当QQ=0 时,产生清零信号。 当QQ=14时,产生锁存信号。 当SEL=0,且(0<QQ<9)时,输出1秒保持信号。 当SEL=1,且0<QQ<11)时,输出10秒保持信号。
编码器测试矢量与仿真波形 TEST_VECTORS([QQ,SEL]->[C_H,CLR,LOCK]) @CONST N=0; @REPEAT 2{ @CONST M=0; @REPEAT 15{[M,N]->.X.; @CONST M=M+1;}; @CONST N=N+1;}
控制电路测试矢量与仿真波形 TEST_VECTORS([SEL,F1,F8]->[C_H,CLR,LOCK]) @REPEAT 5 {@REPEAT 4{[0,0,.C.]->.X.;} @REPEAT 4{[0,1,.C.]->.X.;} } @REPEAT 22 {@REPEAT 4{[1,0,.C.]->.X.;} @REPEAT 4{[1,1,.C.]->.X.;} }
自动量程转换电路的设计 • 输入信号: CARRY-进位 HIGH-高位全零时等于0 LOCK-锁存 • 输出信号: OVER-溢出(在一个闸门时间内,当最高位计数值由9变为0时,说明计数溢出,发出超量程信号。) S1-闸门(S1=0:产生1秒闸门。S1=1:产生10秒闸门。) S2-分频(S2=0:对被测信号不分频。S2=1:被测信号10分频后再测频。)
分频信号(S2)与闸门信号(S1)的组合 • S2S1=00 1秒闸门-不分频,中频段(100Hz~999Hz),无小数点。量程显示Hz。即:中频无小数点。 • S2S1=01 10秒闸门-不分频,低频段(10.0Hz~99.9Hz),个位前小数点亮。量程显示Hz。即:低频个位小数。 • S2S1=10 1秒闸门-10分频,高频段(1.00KHz~9.99KHz),十位前小数点亮。量程KHz。即:高频十位小数。 • S2S1=11 10秒闸门-10分频=[S2S1=00]。中频段(100Hz~999Hz),无小数点。量程显示Hz。
自动量程转换电路 • 如果超量程,且当前SS=10,发出超量程信号(OVER=1)。否则需要转向更高频段。即:从低频段(SS=01)转向中频段(S2S1=00),或从中频段(SS=00)转向高频段(SS=10)。 注:SS=[S2,S1] • 如果没有超量程,⑴计数器的最高位的4位二进制数不全为0,说明当前量程设置合理,频段SS的值不必变化。⑵计数器的最高位的4位二进制数全为0,说明当前量程设置不合理,必须转向更低频段。即:从高频段(SS=10)转向中频段(SS=00),或从中频段(SS=00)转向低频段(SS=01)。 • 自动量程转换电路必须具有记忆功能,因此,需要使用寄存器变量,寄存器的时钟来自控制电路的锁存信号(LOCK)。
自动量程转换电路的设计要点 • CARRY=0-无进位(最高位<9) • HIGH≠0-保持量程不变。 • HIGH=0、SS=00(中频)或01(低频量程)——SS=01(低频量程)。 • HIGH=0、SS=10(高频量程)——SS=00(中频量程)。 • HIGH=0、SS=11(中频量程)——SS=01(低频量程)。 • CARRY=1-有进位(最高位=9) • SS=01(低频量程)——SS=00(中频量程)。 • SS=00(中频)或SS=10(高频量程)——SS=10(高频量程)。 • SS=11(中频量程)——SS=10(转向高频量程)。 • 注意:HIGH为最高位4位二进制数的状态 当全为0时,HIGH=0; 不全为0时,HIGH≠0。
自动量程转换电路测试矢量 TEST_VECTORS([LOCK,HIGH,CARRY]->[SS,OVER]) [0,0,0]->[.X.,.X.]; @REPEAT 4 {[.C.,0,0]->[.X.,.X.];} @REPEAT4 {[.C.,1,0]->[.X.,.X.];} @REPEAT 4 {[.C.,0,0]->[.X.,.X.];} @REPEAT 4 {[.C.,1,1]->[.X.,.X.];} @REPEAT 4 {[.C.,0,0]->[.X.,.X.];} @REPEAT 4 {[.C.,1,0]->[.X.,.X.];} @REPEAT 4 {[.C.,1,1]->[.X.,.X.];} @REPEAT 4 {[.C.,1,0]->[.X.,.X.];}
十分频电路的设计 • 输入信号: FPKZ-分频控制 FREQX-被测频率输入 • 输出信号: CLK-频率信号(当分频控制(FPKZ)为0时,CLK(频率信号)=FREQX(被测频率输入);当分频控制(FPKZ)为1时,CLK(频率信号)=FREQX(被测频率输入)的十分频。) • SFP1-十分频器
十分频电路的设计要点 • 设置一组中间节点: Q3..Q0 NODE ISTYPE ‘REG’; • QQ.CLK=CLK_IN; • 当QQ>=9 时,QQ:=0; 当QQ<9时,QQ:=QQ.FB+1; • SFP=Q3&Q0;
十分频电路测试矢量与仿真波形 TEST_VECTORS([FREQX,FPKZ]->[CLK]) [1,0]->[.X.]; @REPEAT 5{[.C.,0]->[.X.];} @REPEAT 15{[.C.,1]->[.X.];}
频率测量电路测试矢量 TEST_VECTORS([F1,F8,FREQX]->[QQ,OVER]) @CONSTm=4; @CONSTn=1; @REPEAT 32 {@REPEATm {@REPEATn {[1,1,.c.]->.x.;} @REPEATn {[1,0,.c.]->.x.;} } @ REPEATm {@ REPEATn {[0,1,.c.]->.x.;} @ REPEATn {[0,0,.c.]->.x.;} } }
二进制锁存器 • 输入信号: LOCK——锁存信号 D3..D0——输入信号 • 输出信号: Q3..Q0——输出信号 二进制锁存器设计要点 • 当LOCK=1,QQ等于DD。
二进制锁存器测试矢量与仿真波形 TEST_VECTORS([DD,LOCK]->QQ) @CONST M=0 ; @REPEAT 17{[M,.C.]->.X.; @CONST M=M+1;}
四位二进制锁存器设计要点 • 如果计数器的输出直接译码显示,则在闸门信号高电平期间,频率计的显示随着计数值的增加不断变化、不断闪烁、人眼难以分辨。为了防止这种现象,在计数和显示译码之间增加锁存电路。当计数器停止计数后(闸门信号由高变低后),才将计数值锁存并译码显示。
12位锁存器测试矢量与仿真波形 TEST_VECTORS([DD,LOCK]->[QQ]) @CONST M=0; @REPEAT 17{[M,.C.]->[.X.]; @CONST M=M+20;}
动态显示选通电路的设计 • 输入信号: CLKD-动态显示时钟信号 • 输出信号: XT0、XT1、XT2、XT3-选通信号 (当XT0=0,选通H或K单位数码管; 当XT1=0,选通个位数码管; 当XT2=0,选通十位数码管; 当XT3=0,选通百位数码管。) • 设计要点: 设置一个两位二进制计数器,其四种状态,分别对应XT3..XT0四个选通信号。 注:实验器上动态数码管为共阴极,选通端为低电平有效。
动态显示选通电路的设计要点 设置一组中间节点:Q1,Q0 node istype 'reg'; QQ.CLK=CLKD; 当QQ>=3,QQ等于0。 当QQ<3,QQ等于QQ+1。 动态选通端低电平有效 XT3=!(Q1&Q0)——显示百位。 XT2=!(Q1&!Q0)——显示十位。 XT1=!(!Q1&Q0)——显示个位。 XT0=!(!Q1&!Q0)——显示H或K。
动态显示选通电路测试矢量与仿真波形 TEST_VECTORS([CLKD]->[XT]) @REPEAT 10{[.C.]->[.X.];}
显示电路的设计 • 输入信号: XT3..XT0-选通信号 S1-闸门信号 S2-分频信号 A3..A0-个位数 B3..B0-十位数 C3..C0-百位数 • 输出信号: D、C、B、A-动态四位二进制数 POT-小数点 • 中间变量: POT2=1:显示一位小数。 POT3=1:显示二位小数。 KH=0:显示H(Hz)。 KH=1:显示├(KHz)。