版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第3章综合设计实例3.1乒乓球游戏电路设计3.2交通灯控制电路3.3简易投币式邮票自动销售机控制电路设计3.4简易数字钟3.5按键阵列扫描及点阵显示器控制电路设计3.6数字频率/周期计3.7生理刺激反应时间测试仪3.8LCD显示控制电路3.9简易数字式函数信号发生器3.10简易数字电压表
3.1乒乓球游戏电路设计
3.1.1设计实例
1.设计要求
以12个发光二极管逐个点亮模拟乒乓球的运动,双方击球动作各以一个按键模拟,并以4位LED数码管显示游戏双方的得分。具体规则如下:
(1)当发球方按过击球键后,“乒乓球”向对方移动,当“球”达到终端位置时,对方必须按键接“球”。若对方在“球”到达接球位置时准确按下击球键,“球”即向反方向移动。若“球”到达接球位置时未被“接”住,“球”将飞出界外,发球方得1分。若对方在“球”未到达接球位置时按键,接球无效,“球”将继续前行,直至出界。
(2)每次击中“球”时,蜂鸣器鸣响一声。
(3)当某方得分达到11分,一局结束。记分闪显3次,每次显示1s,间隔1s,然后计分值归零。双方得分数值可以各通过一个按键递减以修改错误记分,减记分操作时,数值在0~10间变化。
(4)除游戏开始(上电)或一局结束(某方得分达11分)后,发球方可任意,否则只允许得分方发球,失分方的发球信号无效。
(5)球速可通过两个按键设定为4级,移动速率分别为2Hz、4Hz、8Hz和10Hz。
2.设计的硬件环境
电路控制部分以FPGA实现,球速选择采用电平按键,击球和减分采用脉冲键。得分显示电路和球迹显示电路由FPGA开发装置决定。3.1.2设计原理分析
1.集成双向移位寄存器的控制功能
移位寄存器在移位脉冲控制下,输出状态变化具有信号移位的特点。集成移位寄存器的型号繁多,输出信号的位数一般为4位或8位。为了用户使用方便,集成移位寄存器一般具有复位、预置、信号移位方式控制等功能,数据输入、输出方式都可分为串行或并行两种,不同的型号可能具有不同的控制功能和方式。
1)状态移位方式
集成移位寄存器的状态输出一般以A~D(4位)或A~H(8位)为序,可设A为数据的最高位。集成移位寄存器在每个移位脉冲作用下状态数据移动一位,移位方向可以是单方向左移或右移,也可由外部信号控制双向移动。左移时的状态变化类似于数据同时顺序向高位移动一位,右端串行输入的数据移入寄存器的最低位QD(4位)或QH(8位)。右移时的状态变化类似于数据同时顺序向低位移动一位,左端串行输入的数据移入寄存器的最高位QA。串行数据可以从寄存器的一个端口输入或是从具有组合逻辑关系的多个端口输入。
2)移位脉冲触发方式
集成移位寄存器的状态变化可以发生在移位脉冲的上升沿或下降沿。
3)复位方式
集成移位寄存器可以通过复位控制信号复位(全部位清零)。复位信号分高电平或低电平有效,复位方式分异步(直接复位)或同步(移位脉冲有效才能复位)控制。
4)预置数方式
集成移位寄存器可以由置数信号控制,通过并行数据输入端预置初始值,所以具有置数功能的集成移位寄存器兼有串行和并行数据输入方式。预置数信号分高电平或低电平有效,置数方式也分异步或同步控制。
5)数据输出方式
集成移位寄存器数据输出可以有串行和并行两种方式。串行方式只有最高位状态和最低位状态输出端,并行方式的所有状态位同时输出。并行输出还可以具有三态控制功能,当输出使能无效时,移位寄存器的输出端为高阻状态。
6)移位使能控制
集成移位寄存器可以具有移位使能控制或移位脉冲使能控制功能。当使能端有效时,寄存器允许移位,否则,寄存器内容被锁存。
表3-1-1列出了部分集成移位寄存器的控制方式和功能。
2.设计要求分析
根据游戏规则,本设计需要解决一些逻辑控制问题。
(1)当游戏未开始时,所有发光二极管熄灭。发球方按击球键后,其始端的发光二极管亮,然后向对方移动。所以,发球方的击球键信号有效时,除了设定计数器的计数方式或寄存器的移位方向外,还必须对计数器或移位寄存器进行一次预置数操作。
(2)当“球”移到对方接球位置时,对方若及时接“球”,“球”返回,并鸣笛一响;而“球”未到接球位置时“击球”无效。所以接球方击球键信号必须与其接球位置的二极管控制信号同时有效时,才可改变计数器计数方式或移位寄存器的移位方向控制信号,同时选通音频信号控制蜂鸣器。为了避免接球方违规,提早按键等待“球”移动到接球位置,可将击球按键信号的宽度整定为不大于一个移位脉冲周期。
(3)若“球”移到终端位置时对方未准确接“球”,“球”飞出界外,另一方的得分数加1。可利用顺序脉冲移位出界信号作为对方得分计数器的计数脉冲。当某个得分计数器的状态码值达到十进制数11时,启动闪显定时器控制记分显示闪烁。由于记分值需要能在0~10之间被递减修改,得分计数器也应采用可逆计数器。当记分值为0时,可考虑封锁减分计数信号或使得分计数器准备预置10。
(4)由于“发球”和“接球”采用同一按键信号,可通过发光二极管状态进行区别。为了避免失分方在“球”刚飞出界外时按键接“球”造成误发“球”,可采用触发器控制双方对计数器或移位寄存器的预置数操作。每当某方发“球”后,两个发球禁止触发器都被置位,不允许双方再对计数器或移位寄存器预置数据。当“球”出界后,得分方的记分脉冲使自身的触发器复位,开放发“球”许可。当一局结束后,双方的发球许可都开放,发球方任意。
(5)计数器或移位寄存器的脉冲频率决定了“乒乓球”的移动速率,可通过数据选择器选择不同的脉冲频率改变游戏难度。3.1.3参考设计方案
参考设计方案拟采用具有预置功能的并行8位双向集成移位寄存器74198实现。除寄存器位数不同外,74198的控制功能与74194完全相同,如表3-1-2所示。在工作方式信号S1、S0控制下,74LS198可以实现左移、右移、并行置数及保持4种功能。
1.集成移位寄存器位宽扩展
根据设计原理分析,电路可考虑采用14位移位寄存器构成。输出信号Q13~Q0中,最高位Q13和最低Q0作为移位出界信号,中间12位Q12~Q1输出控制发光二极管显示“乒乓球”的移动轨迹。14位移位寄存器可由两个8位集成移位寄存器74198级联。移位脉冲由球速选择键控制数据选择器选择不同频率的时钟信号。左移时低位序寄存器的最高位状态移入高位序寄存器的最低位,所以低位序寄存器的最高位输出QH连高位序寄存器的右端串行输入SRSI。同理,高位序寄存器的最低位输出QA连低位序寄存器的左端串行输入SLSI。由于上电后FPGA各存储元件的初始状态都为“0”,所以74198的复位信号可接无效电平Vcc。如果需要,也可设置一个复位键控制。
2.接、发球控制
根据设计原理分析,接、发球时都必须设置或改变移位寄存器的移位控制方向,发球时还需要进行预置操作。由表3-1-2可知,74198的移位方向和预置都采用S1、S0控制:在移位方向不同时方式控制信号S1、S0互补,在预置操作时S1、S0都为“1”。因此,拟采用一个基本RS触发器的互补输出控制移位方向,并利用发球有效信号屏蔽其中的“0”信号,使S1、S0暂时为全“1”实现预置控制。
1)发球控制逻辑
采用控制12个发光二极管的全“0”信号和发球禁止触发器的复位信号对击球键状态进行逻辑判断。当某方发球条件满足时,其击球键闭合产生“发球”有效信号。利用“发球”信号的有效电平设置移位寄存器预置数据中为“1”的D12或D1;将移位方向触发器直接置位或复位;通过逻辑门屏蔽移位方向触发器输出为“0”的信号,使S1、S0为全“1”。当移位寄存器被预置后,利用Q12或Q1的有效状态使两个发球禁止触发器都置位,“发球”信号无效,移位方向触发器的输出屏蔽取消,74198的S1、S0为“01”或“10”。由于74198为同步预置方式,所以发球键闭合的时间必须至少维持一个移位脉冲周期。
2)接球控制逻辑
接球方的击球键闭合信号必须经过脉宽整形。整形后的“击球”脉冲如果与接球位置发光二极管的控制信号同时有效,产生“接球”有效脉冲。“接球”有效信号使移位方向触发器的状态切换,并通过逻辑门选通200Hz~2kHz的音频信号控制蜂鸣器产生一次鸣笛音。
根据以上分析,移位方向触发器的复位(置位)输入由某方的“发球”和“接球”两个信号共同控制。图3-1-1所示的数字单稳态触发电路可以实现对信号宽度的整形功能。输入信号M为高电平后的第一个CP的上升沿时Y输出为高电平、第二个CP的上升沿时Y回到低电平。所以当M的正脉冲宽度大于一个CP周期时,Y输出的是一个与CP同步、宽度恒定为1个CP周期(与M宽度无关)的正脉冲。采用数字单稳态触发电路实现接球键信号脉宽整形时,必须考虑CP与移位脉冲的关系。若直接采用移位脉冲控制CP,那么当接球位置的发光二极管亮时,移位脉冲有效沿已经消失。按键闭合信号必须等待下一个移位脉冲有效沿被同步,但那时“球”已“出界”。所以,可考虑采用移位脉冲的反相信号或更高频率的脉冲信号控制CP。图3-1-1数字单稳态触发电路
3.得分计数和显示
为了使显示译码电路方便,可采用两个十进制可逆计数器级联构成得分计数器,双方的4组得分计数BCD码直接通过显示译码输出。得分计数器的加计数脉冲由移位出界信号Q13或Q0控制。当接球方未能准确接球改变移位方向时,移位寄存器的出界信号(最高Q13或最低位Q0)被置“1”,控制相应得分计数器的加计数一次,并使得分方的发球禁止触发器复位。得分计数器的状态可采用数据比较器或逻辑门判断。当某方得分值为11(BCD码为00010001)时,启动一个定时计数器控制显示闪烁。定时器的溢出信号控制得分计数器清零,并使两个发球禁止触发器同时复位。
两个得分计数器的减计数可各由一个按键控制,以修改记分值,每按一次键产生一个减计数脉冲。可逆计数器有74190、74192或参数化计数器,但若加、减计数脉冲不同,可采用双脉冲可逆计数器74192(功能参考2.9节)。得分计数器全零状态的次态是10的BCD码,可采用预置方法实现。另外,因为减分按键直接控制计数器的脉冲输入,按键闭合时的抖动可能造成误记分,所以减分按键信号需要经过消抖动处理。按键消抖动的思路是每隔数十毫秒扫描一次按键,按键的抖动频率远高于扫描频率,这样在两次扫描的间隔时间内发生的抖动完全可以被消除。图3-1-1的数字单稳态触发电路同样可以具有消除按键抖动的功能。电路时钟脉冲CP的周期可选择大于按键抖动一次的时间、小于按键闭合时间。一般,人手按键的时间约为零点几秒,所以消除键抖动时CP的脉冲频率可选择10Hz~100Hz。触发器的输出在每个时钟的上升沿(或下降沿)才随按键的状态变一次,达到了消除键抖动的目的。
4.球速分频电路
球速分频电路可采用计数器实现。得分显示电路与FPGA开发装置有关,若显示电路为动态扫描结构,如LP—2900,可参考2.8节的设计原理或直接调用已创建的逻辑符号。利用闪显定时器的状态码输出控制七段显示译码器7448的灭显输入BIN,或在自建的译码电路中增加灭显控制功能,实现3次显示1s、灭显1s的闪烁效果。
乒乓球游戏机的参考方案原理框图见图3-1-2,闪显定时电路未在图中示出。图3-1-2系统原理框图3.1.4设计预习准备
拟定具体方案,查阅器件资料,选择合适的器件,画出电路原理框图,标出关键信号的连接关系。若采用参考设计方案,考虑以下问题:
(1)设计所选集成移位寄存器的级联方式以及预置数控制逻辑。思考级联后低位序寄存器的右端串行输入SRSI和高位序寄存器的左端串行输入SLSI应如何控制?
(2)根据所用FPGA开发装置选择击球键和减分键。根据所选按键的有效脉冲设计接、发球控制电路。
①考虑产生“接球”、“发球”信号的逻辑电路。
②分析控制移位方向的基本RS触发器应该采用什么逻辑门构成?如何使“发球”、“接球”信号都能控制触发器置位或复位?
③分析图3-1-1电路的工作原理,若输入信号M和时钟脉冲CP的波形如图3-1-3所示,画出两个触发器和与门输出的信号波形。如果输入信号M为负脉冲,分析电路应该如何修改?图3-1-3数字单稳态触发电路输入波形举例
(3)考虑如何控制发球禁止触发器置位或复位?
(4)考虑得分计数器和得分判断电路的控制逻辑,画出电路图。根据所选可逆计数器的逻辑功能,分析如何控制减计数时状态在0~10间变化?
(5)考虑闪显定时器的控制逻辑。怎样利用得分判断信号启动定时器计数,定时时间到后需要进行哪些操作?
(6)根据使用开发装置的FPGA端口协议,确定各I/O端口引脚编号。3.1.5参考设计步骤
(1)建立项目工程并新建图形文件,输入接、发球控制电路设计。分析与综合后建立仿真波形文件,设置仿真输入信号,启动仿真后观察电路输出的移位寄存器方式控制信号和预置数信号是否满足设计要求。仿真正确后创建逻辑符号。
(2)新建图形文件并设置为顶层文件。输入移位寄存器部分的设计图,调入接、发球逻辑符号。移位寄存器的脉冲输入暂设一输入端口CP。分析与综合后打开步骤(1)建立的仿真文件,增加移位脉冲输入。设置合适的脉冲信号。启动仿真后观察移位寄存器输出状态变化是否符合功能要求。
(3)另建图形文件并暂设置为顶层文件,输入得分计数电路和定时控制电路,分析与综合后新建仿真波形文件,设置减分按键输入信号和移位出界信号,启动仿真后观察得分累计功能是否符合设计要求,减分功能是否正确,得分达到11分时闪显控制信号和计数器清零信号是否能正常产生。仿真通过后创建逻辑符号。
(4)设置步骤(2)建立的文件为顶层文件,调入得分计数和定时电路逻辑符号。输入分频电路、球速选择电路和显示译码控制电路。若采用LP—2900实现设计,需考虑发光二极管共阴极控制。
(5)分析与综合项目后分配输入、输出端口引脚,编译通过后下载,按设计要求逐项检查游戏效果。3.1.6思考问题
(1)发球时的按键信号是否需要消抖动或同步化处理?为什么?
(2)根据参考方案完成的电路,在发球时蜂鸣器也可能鸣响一次,为什么?
(3)分析参考设计方案的不足之处,如何完善设计?
(4)若希望游戏再满足以下规则,考虑应该如何修改设计:
①在获得每2分之后,接球方即成为发球方,直至该局比赛结束,或者直至双方比分都达到10分。
② 10平后,发球和接发球次序不变,但每人只轮发1分球。并且胜方必须比败方多得2分。
3.2交通灯控制电路
时序逻辑电路具有记忆功能,含有限状态的时序电路被称为“状态机”,其特点是电路状态按一定的规律周期性循环变化。交通灯控制电路是一个典型的有限状态机控制电路,交通干道路口的红、绿、黄三色灯根据不同的控制要求有规律周期性亮灭变化,各灯的亮灭持续时间也因干道的繁忙程度有所不相同。所以交通灯控制电路必须对状态变化规律和状态持续时间两个变量进行控制。3.2.1设计实例
1.设计要求
设计一个十字路口交通灯控制电路,要求东西、南北两条干道的红、绿、黄三色交通灯按表3-2-1的要求循环变化,并以倒计时方式指示干道通行(或禁行)的维持时间。
2.硬件环境
设计的控制部分以FPGA实现,用6个发光二极管模拟东西、南北两个方向的红、绿、黄交通灯。用两个七段数码显示器显示干道的通行(禁行)时间。3.2.2设计原理分析
根据表3-2-1的要求,本设计的交通灯控制分6个状态,状态转换关系如图3-2-1所示。由于各状态持续时间有所不同,所以电路的核心控制部分是状态机和定时器,状态机在定时器触发下周期性循环转换,状态码控制6个灯以一定的规律变化。图3-2-1电路状态转换图
1.状态机
数字电路中有限状态机由触发器构成。状态码采用二进制编码方式时,状态个数M与触发器位数n满足M≤2n。状态码采用一对一编码(单位码、独热码)方式时,状态个数M等于触发器位数n。当M<2n时,有2n-M个无效状态存在,必须考虑电路的自启动能力。比如,要实现图3-2-1的6个状态:A、B、C、D、E、F至少需要3个触发器。若采用六进制加计数器作为状态机,A~F各状态码可分配为:000,001,010,011,100,101。状态计数器可由定时器触发,当计数器溢出时,计数器加1状态码递增,实现状态顺序转换。
2.定时器
数字电路中,计数器可以实现定时功能。其定时时间(溢出信号周期)为计数脉冲周期乘以计数器的模。加计数器的溢出信号为进位输出,减计数器的溢出信号为借位输出。
当计数脉冲周期相同时,要使状态定时时间不同,定时计数器的模应该受状态控制。改变计数器模值的方法很多,可以用反馈复位法或反馈预置法。而采用计数器溢出信号进行反馈预置是唯一可以不改变电路结构,仅以控制预置数值实现模值修改的方法。当采用减计数方式,并以计数器溢出信号异步控制其预置操作时,计数器的模等于其预置初值。所以,可由状态码设置减计数器的预置数,使之实现不同的状态定时。同时,减计数器输出码值呈递减趋势,符合设计要求的倒计时方式。
表3-2-2是可逆十进制计数器74190的功能表,可以满足交通灯的定时控制要求。
74190功能说明:
(1) GN为计数器使能控制,低电平有效。当GN为高电平时,禁止计数。
(2) DNUP为计数方式控制,接高电平为减计数,接低电平为加计数。
(3) LDN为异步预置数控制,低电平有效。当LDN为低电平时,计数器状态QD、QC、QB、QA分别等于D、C、B、A。
(4)计数器位序由高至低顺序为QD、QC、QB、QA,QD为最高位MSB,QA为最低位LSB。
(5)计数脉冲CLK上升沿有效。
(6)当计数器输出QDQCQBQA为十进制加计数的最大状态码“1001”或为减计数的最小状态码全“0”时,极值状态码指示输出MAX/MIN为高电平。
(7)当极值码指示MAX/MIN为高电平且CLK为低电平时,溢出信号RCON为低电平,即RCON与计数脉冲同步。
各信号的时序关系如图3-2-2所示。图3-2-2可逆十进制计数器74190功能表
3.输出译码器
输出译码器的功能是将状态码译成6个开关量信号控制两个干道的6个交通灯。
当状态码按六进制加计数码分配时,译码电路应实现表3-2-3所示的3输入、6输出的组合逻辑函数,当采用6个触发器实现一对一码(单位码、独热码)状态机时,可由各位状态码输出直接综合实现6个灯的控制。
4.干道通(禁)行时间控制
由于状态A、B、C允许东西干道I通行、南北干道J禁行;状态D、E、F允许南北干道J通行、东西干道I禁行。所以,干道的通(禁)行定时可分两个状态:I状态定时22s,J状态定时16s。干道的通(禁)行时间必须另用一个定时器控制,显示译码器将该定时器的输出译成七段码显示。根据以上分析,电路有两个状态机、两个定时器,分别对交通灯和通(禁)行时间进行控制。考虑到每个干道的通行时间分别与3个状态对应,为了简化电路,设想采用仅对干道通(禁)行时间进行状态控制的参考设计方案,交通灯的控制根据干道通行时间分段实现。系统结构框图如图3-2-3所示。图3-2-3交通灯电路结构3.2.3参考设计方案
1.状态定时
状态定时由可预置初值的BCD码计数器74190实现,采用减计数方式。每当计数码减至0时,溢出信号控制计数器重置计时初值并触发状态翻转。由于74190为异步置数功能,计数器的全“0”状态不能维持。这样,干道的通行(禁行)时间显示值从预置值递减至1,溢出信号周期就是状态定时时间。
1)计数器级联
由于两个干道通行的定时时间都为2位十进制数,需要两个BCD码计数器级联实现计数定时。减计数器的级联原则是:低位计数器从全0状态变为最大码值状态(溢出)时使高位计数器减1。级联方式分异步和同步两种。
(1)异步级联——低位计数器的溢出信号控制高位计数器的计数脉冲输入端。可根据计数器的时钟触发方式,在低位计数器状态码从全“0”变为最大码值瞬间,为高位计数器提供有效的计数脉冲边沿。
(2)同步级联——低位计数器控制高位计数器的使能。只有当低位计数器溢出前(状态为全“0”时),高位计数器的使能才有效,下一个计数脉冲使低位计数器变为最大码值的同时使高位计数器减1。所以同步级联只适用于具有使能控制的计数器。
74190具有使能控制,并兼有异步MAX/MIN和同步(受CP控制)RCON两个溢出信号,可以灵活选择级联方式。但在计数器状态从“1000”减到“0111”时,由于各位信号变化时间不同,使状态可能出现全“0”瞬间,导致异步溢出信号MAX/MIN产生冒险尖脉冲。
2)计数器预置数控制逻辑设计
当I状态的定时时间为22s,计数脉冲为1Hz时,计数器应该预置22的BCD码。同理,J状态应该预置16的BCD码。如表3-2-4所示。定时计数器的预置值由I、J状态触发器的输出电平S(0或1)控制。分析表3-2-4可见,两个状态需要预置的二进制数D7D6D5D4D3D2D1D0中,D1都为“1”,D7D6D3D0都为“0”,而D5D4D2随状态不同,由状态电平S确定。当电路处于状态I时,定时计数器的预置数是控制J状态的定时值:D5=0,D4=D2=1;而处于J状态时,计数器的预置数是控制I状态的定时值:D5=1,D4=D2=0。显然,采用一个反相器综合触发器的输出就可实现定时计数器的预置控制逻辑。
2.计数器预置操作控制与状态触发逻辑设计
由于计数器的预置数操作与状态触发器的切换都由计数器的溢出信号控制,而预置数值又与触发器原状态的输出电平S有关,所以计数器的预置操作必须先于触发器的状态转换,设计时应该注意两者的时序问题。当计数器的预置功能为异步方式、状态触发器为边沿触发方式时,可利用预置信号有效电平的后沿(从有效电平变为无效电平时)控制触发器状态转换。
3.输出译码
1)显示译码
干道通(禁)行时间可由状态定时计数器的输出通过译码后直接显示。
2)交通灯控制
分析图3-2-3可见,每个干道的通行状态对交通灯都有3种不同的控制逻辑,分别对应三个时间段:1~3s、4~6s、6s以上。所以,可采用数字比较器对定时计数器的输出进行比较判断,确定定时值是否小于4或大于6。状态定时值为两位BCD码(8位二进制码),可采用两片4位数字比较器7485级联比较。考虑到比较的数字都小于10,也可用一片比较器在高位计数器输出为全“0”时比较低位计数器的4位输出;当高位计数器输出不全为“0”时,定时值总大于6。
当定时器输出码值处于4至6之间,通行干道的绿灯应该按1s周期闪烁。可在此时间段采用1Hz信号控制绿灯实现。这样,采用一个三输入(状态S和两个比较结果Y1、Y2)组合逻辑函数可以实现对6个交通灯的控制。
参考电路原理框图如图3-2-4所示。图3-2-4交通灯控制电路参考原理框图3.2.4设计预习准备
如果自拟设计方案,画出方案原理框图,标出关键信号的连接关系。如果按参考方案设计,准备以下内容。
(1)复习集成计数器、数值比较器的功能以及状态机的设计方法。
(2)考虑74190的级联方式,画出计数器级联图,标明控制信号连接关系。
(3)采用D、T、JK触发器实现T′触发时各激励输入应该怎样连接?
(4)确定干道通行状态码,设计预置数控制逻辑。
(5)选择合适的的溢出信号实现级联定时计数器预置控制逻辑和状态机触发逻辑。
(6)若采用两片数字比较器级联,考虑信号的连接关系;若只对定时计数器的低位BCD码比较,设计比较判断逻辑。
(7)列出状态电平S、两个数字比较器输出Y1、Y2与6个灯的逻辑关系真值表。并考虑如何使绿灯闪亮。
(8)根据所使用的FPGA开发装置,考虑干道定时时间的译码显示控制。3.2.5参考设计步骤
(1)创建图形文件,按预习准备内容输入定时计数器、状态触发器及预置控制部分电路。编译后仿真两个状态的维持时间,观察状态电平与定时时间是否符合设计要求。
如果发现MAX/MIN信号有竞争冒险现象,可以通过一个D触发器消除冒险毛刺。由于冒险信号很窄,宽度小于D触发器的建立时间,不足以使触发器输出改变状态,从而消除冒险脉冲。D触发器的时钟频率选择在10kHz左右,以减少信号的延迟。
(2)按预习准备内容再输入数字比较部分电路,编译后仿真S、Y1、Y2三个信号是否符合设计要求。
(3)输出译码逻辑设计。采用组合器件设计译码逻辑,或参照1.3.4节例3,采用AHDL的真值表方式设计一个输出译码逻辑。分析与综合后建立仿真波形文件,检查S、Y1、Y2对6个输出信号控制逻辑。仿真正确后创建器件符号在顶层文件中调用。
(4)设计时钟分频电路和定时显示译码部分电路。若采用DE2开发板实现电路,由于采用共阳显示器,静态显示方式,定时器输出的每位BCD码都经过一个七段共阳显示译码器输出。若采用LP—2900开发装置实现电路,译码扫描显示模块原理参考2.8节内容。
(5)选择6个发光二极管,定义端口引脚。若采用LP—2900开发装置,注意发光二极管的共阴极控制电平。
(6)编译后下载,观察设计效果。3.2.6思考问题
(1)若计数器采用同步预置方式,通(禁)行时间如何显示?
(2)定时计数器的溢出信号是否可以先触发状态转换再进行预置操作?
(3)能否有其他方法消除MAX/MIN信号中的冒险脉冲?
(4)如果希望增加转弯信号灯,系统需要几个状态?画出状态图,并列出交通灯的控制逻辑。
3.3简易投币式邮票自动销售机
控制电路设计
3.3.1设计实例
1.设计要求
设计一个简易投币式邮票自动销售控制系统,具体要求如下:
(1)系统允许投入0.5元和1元两种硬币,售出面值为2元的邮票。
(2)当硬币投入后,系统用七段LED数码管显示已投入的累计币值。
(3)当投币累计等于2元时,输出邮票;当投币累计大于2元时,输出邮票并输出找零币值。
(4)输出信号有效电平维持3s时间,输出信号无效后系统回到初始状态(累计币值为0)。输出信号持续期间,不能允许再投入硬币(封锁投币信号,实际产品可封锁投币口)。
(5)输出信号有效时蜂鸣器以0.5s鸣响、0.5s间隔的方式发出提醒音,输出邮票时蜂鸣器的鸣响频率为1kHz,输出邮票并找零时蜂鸣器的鸣响频率为2kHz。
(6)为了保证系统上电时处于初始状态,设置一个状态机复位键。
2.硬件环境
控制系统以FPGA实现,用两个脉冲按键分别模拟投入0.5元和1元两种硬币,用两个发光二极管分别指示输出邮票和找零。累计币值用两个七段LED数码管显示,显示方式由所使用的FPGA开发装置电路结构决定。3.3.2设计原理分析
投币式自动销售机的主要功能是累计投入的币值并做出判断,所以要求电路具有记忆功能。数字电路中的时序逻辑单元能够运用电路“状态”记忆输入信号的变化历程,因此本设计的基本电路是由触发器构成的时序“状态机”。根据设计要求,简易投币式邮票自动销售系统的控制流程如图3-3-1所示。图3-3-1简易投币式邮票自动销售机控制流程图
1.时序逻辑电路设计方法
为了使设计过程简化,系统可采用同步时序逻辑电路实现,其原理结构如图3-3-2所示。图3-3-2同步时序逻辑电路原理框图同步时序逻辑电路的具体设计步骤是:
(1)根据功能要求确定所需输入变量、输出变量以及状态的个数,列出原始状态表或画原始状态图。实现时序控制功能所需记忆的“事件”个数决定了时序逻辑电路的有效“状态”个数。比如,若采用米利型状态机实现本设计的功能,需要记忆的累计币值是0元、0.5元、1元和1.5元4种状态。
(2)化简原始功能状态表或状态图(合并等价状态),列出最简功能状态表或状态图。如果器件逻辑资源丰富,可以不化简状态。根据图3-3-1,若用米利型状态机实现本设计,分别用A、B、C、D表示4种状态,功能状态图如图3-3-3所示。图3-3-3简易投币式邮票自动销售机米利型状态图
(3)确定触发器个数及状态编码值。赋予每个状态一组二进制编码,代入功能状态表,得逻辑状态表。一般,触发器个数n与状态个数M满足:M≤2n。4个状态至少用两个触发器,若A~D各状态编码分配为“00”、“01”、“10”、“11”;两种币值用两个开关量信号表示,设投入0.5元时X1=“1”,投入1元时X2=“1”,两个信号同时为“1”时无效,状态保持不变;并设邮票输出信号为Z2、找零输出信号为Z1,均为高电平有效。米利型状态机赋值后的状态表如表3-3-1所示。
(4)根据逻辑状态表列各触发器的次态卡诺图和输出卡诺图,根据状态表或化简次态卡诺图可列电路的输出方程和各触发器的次态方程。表3-3-1对应的各触发器次态卡诺图如图3-3-4所示。图3-3-4米利型简易投币式邮票自动销售机次态卡诺图
(5)选择触发器类型,将各次态方程与所选触发器的特性方程比较,得各触发器的激励驱动方程。根据输出卡诺图化简得输出逻辑函数表达式。若选择D触发器构成状态机的时序逻辑部分,则由于D触发的特性方程=Di,因此激励方程与次态方程相似。
(6)如果有无效状态存在,则检查电路的自启动能力。如果不具备自启动能力,可以重新考虑次态卡诺图中无关项取值。
(7)选择组合电路实现方式,根据触发器的驱动方程及电路输出函数表达式设计组合电路部分。画电路连接图。
2.状态机的激励控制方式
在数字逻辑中,可以采用不同的部件实现组合逻辑电路,比如逻辑门、译码器、数据选择器、只读存储器、可编程逻辑阵列等。仍以简易投币式邮票自动销售机米利型电路为例,说明同步时序电路中触发器的激励逻辑控制方法。
对照图3-3-2可知,本例的输入变量数i=2,状态变量数n=2,输出变量数m=2。若选择D触发器实现状态机,激励变量数j=2。
1)逻辑门实现
根据组合逻辑模块的输入、输出的逻辑关系列出真值表,写出各输出函数表达式并化简,如果有逻辑门类型的限制则根据要求变换逻辑关系,然后由逻辑函数式画出逻辑图。
若对逻辑门类型没有限制,可直接采用与或门实现激励控制和输出控制,电路图略。
2)数据选择器方式
触发器的每个激励和电路的每个输出都用一个数据选择器控制。数据选择器的选择输入是状态机的状态变量Q,数据输入根据触发器的激励函数决定,一般是逻辑常量或电路输入X。所以,若用数据选择器实现图3-3-2中组合逻辑模块,选择器的个数是j+m个,每个选择器的选择输入为n个,数据输入为2n个。本例的触发器激励需要两个四选一数据选择器,每个选择器的选择变量A1、A0由触发器输出Q1、Q0控制,选择器输出Y分别控制触发器的激励D1、D0。设Q1为选择器高位选择码,Q0为低位选择码。根据图3-3-4可得各选择器数据输入Dyi的逻辑关系。
控制输出D1的MUX1的4个数据输入:
控制输出D0的MUX0的4个数据输入:
电路如图3-3-5所示。图3-3-5触发器激励由数据选择器控制
3)只读存储器方式
触发器的每个激励和电路的每个输出都由存储器的一位数据输出端控制,存储器的地址由电路的输入X和状态机的状态变量Q控制。所以,若用只读存储器ROM实现图3-3-2中组合逻辑模块,存储器的地址码位数是i+n,输出数据位数是j+m,存储容量是(j+m)×(i+n)。
存储器中每个单元的存储内容是对应电路输入和状态机现态某个组合时的次态和输出逻辑值,所以,存储器中存储的信息就是逻辑状态表。若用ROM实现米利型状态机的组合逻辑关系,ROM的容量为16×4,地址码和数据各为4位。如果以电路输入X2X1和触发器Q1Q0控制ROM的地址A3~A0,ROM的数据输出q3~q0控制电路输出Z2Z1和触发器激励D1D0,根据状态转移表可列ROM的存储数据表,如表3-3-2所示。状态机电路如图3-3-6所示,图中省略了ROM的读控制和片选控制。由于ROM的地址受输入信号控制,当输入改变时ROM的输出必须马上作出响应,以使状态机的触发脉冲有效时正确的激励信号已经建立,所以在建立ROM器件时可以不设置端口控制时钟。如果器件型号限定时钟必选(如cyclone系列),则时钟频率应远高于状态机的触发时钟频率,使ROM的输出延时可以忽略,呈组合逻辑特性。图3-3-6触发器激励由ROM控制
3.输入信号处理
分析图3-3-1的简易投币式邮票自动销售机控制流程,系统状态A~D随硬币投入而改变,而当输出邮票时,系统需要保持3s时间。所以,前4个状态由投币信号触发转换,后两个状态应由定时信号触发转换。由于投币信号是人为按键产生的,按键的持续时间不可能精确一致,所以脉冲宽度是随机变化的,还可能伴有机械抖动。因此,系统必须对输入信号进行处理,消除信号抖动,并保证每个投币有效信号触发状态变化一次。若状态机的触发时钟采用周期性脉冲信号,币值信号或定时信号是作为状态机的输入控制,则当输入无效时,状态机也被触发,但状态保持不变。为保证每次投入硬币后状态只变化一次,随机输入的异步信号必须归化为与状态机触发时钟同步、宽度为一个时钟周期的脉冲信号。
如果选择投币信号或定时信号作为状态机的触发时钟,由于输入无效时状态机没有触发脉冲,可使激励控制逻辑简化。
4.输出信号处理
根据设计要求,输出邮票和找零操作指示必须持续3s时间,所以系统必须具有定时功能。由数字逻辑基础可知,模M的计数器经过M个时钟周期状态循环一次,循环时间为M个计数脉冲周期。因此,可采用计数器实现定时或延时功能。
由于莫尔型时序逻辑电路的输出信号受状态控制,所以设计要求输出信号持续3s的功能可以由状态定时实现。而米利型电路的输出信号受输入信号控制,当输入信号无效后将影响输出信号,可以采用触发器维持输出信号不变。当输出信号有效时使触发器置位,持续3s后由定时信号复位。3.3.3设计参考方案
根据设计原理分析,投币式自动销售机的设计需要解决的几个关键问题是:输入信号同步化、电路状态确定、状态转换关系分析、状态机和组合控制逻辑以及输出控制逻辑设计。参考方案拟采用莫尔型控制方式、组合电路采用只读存储器ROM构成、状态机触发时钟采用投币信号和定时信号综合产生。由于无币投入时状态机没有触发脉冲,所以币值输入可以一位编码信号X区别:X=0,表示投入0.5元;X=1表示投入1元。设置两个开关量输出信号:Z2为找零输出控制信号,Z1为邮票输出控制信号。
1.状态与状态码确定
由于采用莫尔型时序电路,6种币值累计需要6个状态记忆。与图3-3-1相似,可设定状态A为初始状态(币值累计为0元);状态B表示投入币值累计为0.5元;状态C表示已累计1元;状态D表示已累计1.5元;状态E表示已累计2元,应输出邮票;状态F表示已累计了2.5元,应输出邮票并找零0.5元。状态系统状态转换关系如图3-3-7所示。其中,状态A~D由投币信号触发转换,转换趋向由币值电平X控制。状态E、F由3s定时信号触发,无条件回到初始状态A。图3-3-7简易投币式邮票自动销售机莫尔型状态图
6个状态至少需要3个触发器记忆。由于每个状态对应了一种累计币值,为了简化币值显示译码电路,可以考虑选择状态码Q2Q1Q0的最低位表示累计币值的十分位数,即Q0=1时,表示累计币值小数部分为5;否则为0。状态码高两位Q2Q1以二进制数表示累计币值的整数部分。这样,状态A的编码为“000”、B为“001”、C为“010”、D为“011”、E为“100”、F为“101”,恰巧呈自然二进制数序特点。
2.输入信号处理
因为采用投币信号和定时信号作为状态机触发时钟,必须使每次投币都产生一个触发脉冲,并与定时脉冲综合形成状态机的触发时钟。当系统处于状态A~D时,由投币脉冲触发,根据X的电平转换状态;当系统处于状态E、F时,由定时脉冲触发,无条件转向初始状态。本设计采用两个按键分别模拟两种不同币值的硬币,产生两路开关量脉冲信号。根据方案构思,系统需要在任一按键作用时都要产生一个状态机的触发脉冲信号,同时设置相应的币值电平。选择合适的逻辑门可将两路脉冲信号综合为一路,并采用3.1节中介绍的数字单稳态电路对信号进行同步化处理,既能消除按键抖动,又可将综合后的投币信号M归化为宽度是一个CP脉冲周期的状态触发信号Y。
币值电平X可以利用由逻辑门构成的基本RS触发器产生。当0.5元投币信号有效时使触发器复位,X=0;当1元投币信号有效时使触发器置位,X=1。
3.定时电路设计
根据设计要求,系统在状态E和F维持3s时间,然后在定时信号的触发下回到初始状态。定时信号可采用定时计数器产生,系统进入状态E或F时允许循环周期为3s的定时计数器开始计时,当定时时间到时计数器产生溢出信号Co触发状态转换。当系统不处于状态E、F时,可强制计数器复位,没有定时信号产生。
4.状态机的组合逻辑部分设计
若状态机采用D触发器实现,组合逻辑电路需要产生3个激励信号,2个输出信号(输出邮票和找零)。由于FPGA具有丰富的存储资源,所以组合逻辑函数可以考虑采用只读存储器ROM实现。ROM的地址输入由币值信号X以及状态变量Q2Q1Q0控制,数据输出为5位。根据图3-3-7及状态编码,可列出系统的状态转移表。根据状态转移表以及ROM的输入、输出连接关系可建立ROM的数据存储器表。
由于状态机采用3个触发器实现,而电路的有效状态为6个,所以必须考虑两个无效状态的自启动问题。
5.累计币值显示电路设计
累计币值为2位十进制数,1位整数、1位小数,所以还要考虑小数点显示。根据状态码Q2Q1Q0的分配原则,当状态码Q0=“1”时,控制低位显示值的BCD码为“0101”,否则显示码为“0000”;而Q2Q1的状态恰是高位显示值BCD码的低两位。所以低位显示码的控制逻辑为“0Q00Q0”,高位显示码的控制逻辑为“00Q2Q1”。需要注意的是,ROM产生的是触发器的激励信号,而触发器输出的是状态码。若采用LP—2900实现系统,动态扫描显示控制电路的设计原理可参考2.8节。综上所述,简易投币式邮票自动销售机的参考设计框图如图3-3-8所示,图中RST为状态机复位输入。图3-3-8简易投币式邮票自动销售机参考原理框图3.3.4设计预习准备
如果自拟设计方案,画出方案原理框图,标出关键信号的连接关系。如果按参考方案设计,准备以下内容。
(1)确定存储器的输入、输出信号位序,根据图3-3-7状态转换关系及状态编码,列存储数据表(状态表)。
(2)根据所选投币模拟键的有效电平设计基本RS触发器。
(3)选择合适的计数器设计定时电路。根据计数脉冲频率确定计数器的模。
(4)考虑系统在E、F时如何禁止投币信号M变化。
(5)根据输出信号Z2、Z1设计蜂鸣器控制逻辑。
(6)考虑显示控制逻辑。
(7)分析系统中哪些部件需要复位控制,设计复位逻辑。
(8)根据所用FPGA开发装置基准时钟OSC的频率和各模块需要的时钟频率设计分频电路,设计原理可参考2.5节内容。3.3.5参考设计步骤
(1)创建工程,设计输入信号处理电路,建立仿真文件。仿真后观察输入信号有效时投币脉冲和币值电平是否符合预定要求,仿真通过后创建模块符号。
(2)设计定时电路,建立仿真文件。仿真结果符合预定要求后创建模块符号。
(3)根据预习拟订的存储信息表建立存储器的初始化文件 *.mif或 *.hex,建立方法参考1.3.4节例2。
(4)建立顶层文件。设计参数化ROM,选择合适的字长和字数,注意初始化文件的路径设置。
(5)调用底层各模块,创建或导入分频模块和显示控制模块。设计显示码逻辑电路,注意各信号与显示控制模块的位序关系。设计蜂鸣器控制逻辑。
(6)分析与综合通过后,分配输入、输出端口,根据所使用实验装置的FPGA端口连接协议锁定端口编号,编译通过后下载观察设计效果。
(7)按设计要求检查系统功能,若功能不满足设计要求,修改设计文件。3.3.6思考问题
(1)参考方案中状态机的输出控制ROM的地址输入。那么,当触发脉冲使状态机状态转换时,ROM的地址和输出数据的改变是否会造成状态机连续变化?为什么?
(2)参考方案中状态机由投币信号触发转换,投币信号产生的脉冲宽度是否必须统一?为什么?
(3)如果参考方案的莫尔型状态机用周期性同步脉冲触发,实现激励和输出控制的ROM容量需要多大?电路的输入无效组合(维持状态不变)有几组?
3.4简 易 数 字 钟
3.4.1设计实例
1.设计要求
设计一个简易数字钟,具有整点报时和校时功能。
(1)以4位LED数码管显示时、分,时为二十四进制。
(2)时、分显示数字之间以小数点间隔,小数点以1Hz频率、50%占空比的亮、灭规律表示秒计时。
(3)整点报时采用蜂鸣器实现。每当整点前控制蜂鸣器以低频鸣响4次,响1s、停1s,直到整点前一秒以高频响1 s,整点时结束。高、低频率相差一倍,一般低频可选500 Hz或1kHz,高频选择1kHz或2kHz。
(4)采用两个按键分别控制“校时”或“校分”。按下“校时”键时,时显示值以0~23循环变化;按下“校分”键时,分显示值以0~59循环变化,但时显示值不能变化。
2.硬件环境
系统可以在DE2开发板或LP—2900开发装置上实现,控制部分采用FPGA设计。本节以LP—2900为例,说明简易数字钟电路的设计原理和实现方法。
图3-4-1是LP—2900装置上FPGA与七段数码显示器、校时按键、整点报时电路的控制信号连接关系。LP—2900装置上的6个LED数码显示器连接成动态扫描方式,本设计需要4位LED数码显示,可参考2.8节。图3-4-1LP—2900开发装置FPGA与数字钟的接口关系3.4.2设计原理分析
1.二进制同步计数器74161
本设计电路采用二进制同步计数器74161,其逻辑符号如图3-4-2,功能如表3-4-1所示。图3-4-274161逻辑符号
4位二进制计数器74161模为16,状态码为“0000”~“1111”。从表3-4-1可以看出:
(1) 74161的复位取决于复位信号CLRN,与其他信号无关。所以其复位功能为异步控制、低电平有效,优先级别最高。
(2) D、C、B、A为并行数据输入端。当CLRN信号无效(为“1”)且置数信号LDN有效(为“0”)时,在CLK脉冲的上升沿,D、C、B、A的数据被置入计数器。所以其置数功能为同步控制、低电平有效,优先级别仅次于复位控制。
(3) ENT和ENP为计数使能控制端,高电平有效。只要两个使能端中有一个为低电平,计数功能就被禁止,计数器状态保持不变,所以两者为“与”逻辑。
(4)进位输出RCO仅在计数器状态为全“1”且ENT为高时才有效(高电平)。所以,RCO的下降沿指示了计数器的溢出(状态码从最大值复0),在多片计数器级联时可作为向高位计数器的进位信号。在计数器全状态(0000~1111)计数时,RCO的信号周期为计数脉冲周期的16倍,可作为计数脉冲的16分频信号,占空比(高电平时间与周期时间的之比)为1/16。
2.74161的应用
模值为M的集成计数器可以被用来实现模为任意值的计数器电路。利用集成计数器的置数功能或复位功能可以减小集成计数器的模,而多片集成计数器相连又可以扩展计数器的模。下面我们以加计数器(状态码从0→M-1变化)构成十进制计数器为例讨论集成计数器的模值改变方法(10<M)。
1)反馈复位法
计数器74161为异步复位,利用第10个计数脉冲产生的无效状态码“1010”综合出复位控制信号,使计数器立即被复位至循环周期的初始状态“0”。状态码“1010”转瞬即逝,不能维持。
如果计数器为同步复位,则利用第9个计数脉冲产生的有效状态码“1001”综合出复位准备信号,当第10个脉冲到达时复位控制有效,计数器复位至状态“0”。
2)反馈置数法
计数器74161为同步置数,若预置数码值为“0000”,则模为10的计数器的有效状态码为“0000”~“1001”,每个计数状态循环周期中第10个时钟使计数器状态从“9”跳转为“0”,称反馈置零。利用第9个计数脉冲产生的有效状态码“1001”综合出置数准备信号,当第10个脉冲到达时置数控制有效,计数器置数至状态“0”。如果计数器为异步置数,则利用第10个计数脉冲产生的无效状态码“1010”综合出置数准备信号,当第10个脉冲到达时置数控制有效,计数器置数至状态“0”。
当电路发生走时误差时,要求电路具有校时功能。数字钟的分校正和时校正一般独立进行,并希望数值变化率较快,比如5~10Hz。
所以,数字钟中分、时计数器都有两个计数脉冲信号源,正常工作状态时分别为分脉冲和时脉冲;校正状态时都为5~10Hz的校正脉冲。校正键一般采用脉冲按键,需经消抖动处理,否则可能很难精确设定时间。消抖动电路及其工作原理可参考3.1节。
电路在整点前10s钟内开始控制蜂鸣器报时,可采用数字比较器或逻辑门判断分、秒计数器的状态码值,以不同频率的脉冲控制蜂鸣器鸣响。3.4.3参考设计方案
根据设计原理分析,数字钟电路主体部分是3个计数器,其中分、时计数器的计数脉冲由校正按键控制选择秒、分计数器的溢出信号或校正10Hz计数信号。计数器的输出通过七段译码后显示,同时通过数值判断电路控制蜂鸣器报时。
1.时、分、秒计数器
数字钟的计时周期为24小时,显示范围00时00分00秒~23时59分59秒。为显示译码方便起见,秒、分计数为六十进制8421BCD码计数器,当秒、分计数器在最大状态码59(01011001)8421BCD时,溢出信号有效。计数为二十四进制8421BCD码计数器,即采用两个十进制计数器级联成2位8421BCD码计数器(模100),再用复位法或预置零法实现模为24、状态码为0~23的计数器。
1Hz秒脉冲和10Hz校正信号可从FPGA开发装置的基准时钟的分频获得,分频电路可参考2.5节设计。
2.分、时计数器的计数脉冲选择
当分(时)校正按键有效时,分、时计数器输入10Hz的校正信号,否则,计数器分别输入秒、分计数器的溢出信号。计数信号可以通过与或门、三态门或数据选择器选择。
校正分值时计数器的数值不能改变,所以分校正按键有效时必须封锁分计数器的溢出信号向时计数器的进位,可以采用逻辑门实现控制逻辑。但要注意分校正键状态改变时要避免控制器产生一个时计数器的脉冲有效边沿,引起时计数器误触发。
3.正点报时电路
采用数据选择器选择不同的频率控制蜂鸣器。在59min50s起的单数秒值(51,53,55,57)时蜂鸣器控制信号频率为500Hz,双数秒值时控制信号频率为0,在59min59s时控制信号频率为1kHz。当分计数值不是59或秒计数值小于50时,蜂鸣器不会鸣响。这样,蜂鸣器鸣响时分计数器的状态码总是“01011001”,而秒计数器的高位组BCD码为“0101”、低位组BCD码的最低位为“1”。满足鸣响条件时,若秒计数器低位组BCD码的最高位码为“0”(0ΦΦ1)时,蜂鸣器控制信号频率为500Hz;为“1”(1001)时,控制信号频率为1kHz。由于时间计数是逐一递增的,所以只要根据分计数器BCD码和秒计数器高位组BCD码中为“1”的位和最低组BCD的最高、最低位信号电平即可综合数据选择器的控制逻辑。当不满足鸣响条件时,禁止脉冲信号控制蜂鸣器。采用秒计数脉冲控制时、分间的小数点。
图3-4-3为简易数字钟框图。图3-4-3简易数字钟框图3.4.4设计预习准备
(1)查阅资料选择合适的集成计数器设计二十四进制计数器,根据所选计数器的功能特性考虑级联方式以及模值修改方法,画出电路原理框图。
(2)考虑正点报时控制电路设计,画出电路原理框图。
(3)考虑分进位信号控制电路,列出控制逻辑表达式或真值表。
(4)根据所用FPGA开发装置的显示电路结构,考虑时间显示控制逻辑。
(5)查阅所使用开发装置的FPGA端口编号表,在电路原理图中标出各输入、输出的端口编号。3.4.5参考设计步骤
(1)建立图形文件设计二十四进制计数器。综合后建立仿真文件,观察计数器状态码是否符合设计要求。仿真正确后创建逻辑符号。
(2)另建图形文件并设置为顶层文件,设计蜂鸣器控制电路。综合后建立仿真文件,观察计数器状态码是否符合设计要求。仿真正确后创建逻辑符号。
(3)另建图形文件并设置为顶层文件。导入或创建六十进制计数器、分频模块和显示译码控制模块,导入二十四进制计数器和蜂鸣器控制电路逻辑符号。
(4)设计按键输入消抖动电路和秒、分、时各计数器间的级联控制逻辑。
(5)完成整个电路后,分配各I/O端口引脚。编译适配后下载观察实验效果。3.4.6思考问题
(1)若计数器为上升沿触发,如何实现异步级联?
(2)根据按键消抖动电路的原理分析,键扫描频率是否越低越好?
(3)调试时如果发现分校时按键改变状态时会使时计数器加1,分析可能是什么原因,举例说明。
(4)要求整点时能自动报时,报时频率用1kHz推动扬声器,扬声器发声次数应与整点小时数一致,例如时间是9点整,扬声器应响9次;其余类推。考虑如何设计整点报时
电路。
3.5按键阵列扫描及点阵显示器
控制电路设计
3.5.1设计实例
1.设计要求
实现一个按键阵列判断电路,采用发光二极管点阵显示器以12个显示符标识12个按键。当有键按下时,显示其标识符,并保持显示符直到新的按键作用。如果多个按键同时闭合,只响应最先作用的按键。
2.硬件环境
设计对象的实现环境与所采用的FPGA开发装置有关,本节以LP—2900为例,说明采用按键阵列扫描和点阵显示器控制电路的设计原理和实现方法。
LP—2900开发装置上有“0~9”、“*”、“#”共12个键构成的3行4列按键阵列以及8行8列64个点的点阵显示器。FPGA与按键阵列、点阵显示器的连接关系如图3-5-1所示。图3-5-1LP—2900开发装置FPGA与按键阵列、点阵显示器的接口关系
FPGA通过端口RK1~RK3读取键阵列的行线状态X0~X2;通过3—8线译码器控制键阵列的列线Y0~Y3。74138的译码输入由FPGA端口DE3~DE1控制。
点阵显示器各行由FPGA的端口ROW1~ROW8控制,点阵显示器各列由FPGA端口C1~C8通过反相器控制,以满足电流驱动能力。3.5.2按键扫描和点阵显示原理
1.按键扫描原理
数字电路中,按键的闭合和断开状态可以通过其控制的逻辑电平判断。
1)按键状态判断
图3-5-2(a)电路将按键闭合、断开转换成代表“0”或“1”二值逻辑的低电平和高电平,判断电路输出X的电平即可了解按键的通、断状态。按键一般为机械开关,其触点的合、断有弹性抖动,如图3-5-2(b)所示,抖动时间约5~10ms。为了保证按键动作一次电路只判断到一次状态电平改变,需要采用消抖动措施。采用基本RS触发器可以对X的电平信号整形,实现消抖动。图3-5-2按键状态判断原理
2)按键阵列判断
若需要判断的按键较多,为节省信号端口资源,一般将按键分成行、列两组连接成阵列形式,16个按键的阵列如图3-5-3(a)所示。每个按键跨接在一条行线Xi和一条列线Yi间。当按键闭合时,行线与列线接通。每条行线都通过一个电阻上拉到 +5V电位,当行线上的所有按键都未闭合时,行线一定为高电平。当某条列线为低电平时,根据各行线的电平可判断该列线上各键的状态。比如,当Y1为低电平时,如果4条行线X0、X1、X2、X3的状态为“1011”,可判S11键闭合,S01,S21,S31键断开;若X0、X1、X2、X3的状态为“0101”,则可判断S01、S21键闭合。图3-5-3按键阵列扫描原理
3)按键扫描判断
若以图3-5-3(b)的负脉冲扫描序列信号控制键阵列的列线,使各列线分时为低电平,同时顺序判断各行线电平,就能逐个确定各键状态。比如,首先观察行线X0的电平,当列线Y0~Y3分别为低电平时判断了S0、S1、S2、S34个键;然后观察行线X1,列线Y0~Y3再次分别为低电平,判断S4、S5、S6、S74个键,…… 显然,每个按键的扫描时间是列线的低电平时间,而阵列的扫描周期是按键扫描时间乘以键数。所以,按键的闭合时间必须大于阵列扫描周期,否则闭合状态可能会被遗漏。比如,当阵列为16个键时,如果每个键的扫描时间是10ms,则键的闭合时间必须大于0.16s。按键的闭合时间因人的动作快慢而异,通常为零点几秒至一点几秒。
2.发光二极管点阵显示原理
点阵显示电路是由发光二极管组成的阵列。每一行发光二极管的阳极接在一起,由行信号ROWi控制;每一列发光二极管的阴极接在一起,由列信号Cj驱动。图3-5-4是8行、8列的发光二极管点阵显示电路,从上至下各行、从左至右各列编号依序增加。当某行信号为“1”、某列信号为“0”时,连接该行、该列的发光二极管亮。若行信号ROW3为“1”、列信号C4、C6为“0”,阵列中对应的两个发光二极管亮。图3-5-4发光二极管点阵显示原理如果把发光二极管阵列的每一行看做一个8段共阳显示器,ROWi为阳极公共端,每一列Cj就是显示器的一个段,低电平有效。这样,8×8点阵显示电路与8位动态扫描共阳显示电路的结构完全相同,当行扫描信号为高电平时,列信号的低电平可以控制该行各列的发光管亮。比如,当ROW1为高电平时,若列信号C1~C8为“01111110”,则ROW1行第一和最末的发光管灭,其他6个亮。同理,若把发光二极管阵列的每一列看做一个8段共阴显示器,Cj为阴极公共端,8×8点阵显示电路就与8位动态扫描共阴显示电路的结构
相同。由于LP—2900开发装置上点阵显示器的列信号通过反相器驱动,所以其FPGA的列控制逻辑为高电平有效,即当ROWi、Cj都为“1”时,第i行、第j列的发光二极管亮。
根据2.8节介绍的动态扫描显示控制的原理,如果采用一个计数器顺序产生8路行扫描信号RW1~RW8,同时根据各行发光二极管的显示要求同步控制列信号,当扫描计数频率足够高时,点阵显示的效果为一个稳定的字符。3.5.3设计参考方案
根据按键阵列的判断原理,可采用一个计数器产生按键编码信号。计数器的脉冲周期等于按键的扫描时间,计数器的模M大于等于被扫描的按键数N。本设计要求判断12个按键的阵列,所以可采用4位二进制计数器产生按键扫描码。计数器输出控制译码器产生列扫描信号Y0~Y3,并控制数据选择器选择行线电平Xi。当被扫描的按键闭合时,选择器的输出信号控制寄存器保存计数器当前的键码状态,同时封锁计数器停止键扫描,以避免其他按键闭合时产生的影响。发光二极管点阵电路采用3位二进制计数器译码后扫描控制其行(列)信号ROWi(Cj),同时控制列(行)显示码同步循环输出。所以,必须设计一个译码逻辑器件,根据寄存器保存的按键编码输出键符显示列(行)控制码。键符显示译码器件可以采用AHDL真值表方式、组合逻辑器件或只读存储器ROM来实现。采用ROM存储键符列显示码的参考设计电路如图3-5-5所示。如果用LP—2900开发装置完成设计,图3-5-5中虚线以外的电路由FPGA实现。图3-5-5参考设计电路原理框图
1.按键编码
图3-5-5中计数器A输出4位二进制码Q3~Q0,每组码通过译码器A产生一列低电平有效的列信号,同时通过数据选择器选中一个行线信号判断连接该列、该行的按键状态。当数据选择器输出低电平时,表示被扫描键闭合。所以,计数器输出的二进制码与阵列中的按键一一对应。显然,按键的编码位序与计数器的输出控制有关。若计数器的高两位输出Q3、Q2控制选择信号B1和B0,低两位输出Q1、Q0控制译码信号A1和A0,则计数器输出为“0001”时,Y0为低电平,选择输出X1的状态,扫描按键S2。因此,“0001”为S2的键码。
2.键符显示码存储
由于ROM的数据输出控制点阵的列信号C1~C8,因此ROM中每个存储单元的数据就是一行列控制码,每位数据控制一列。一个显示符的8行控制需要8个单元的列码数据,12个不同的键符显示需要96个存储单元,这样显示译码存储器至少需要7位地址。如果ROM的高4位地址A6~A3由键码Q3~Q0控制,低3位地址A2~A0由行扫描计数器B控制,每个显示符的8行列控制码被存放在以键码划分块的连续8个存储单元中。建立存储数据文件时要注意数据位序与点阵列序的关系以及存储单元低3位地址与点阵行序的关系。比如,若存储器的数据输出D7~D0依序控制C1~C8,则数据码从高至低位分别对应点阵显示器的从左至右列。如果状态机B的输出与译码器B的输入及存储器低3位地址的位序对应相同,当译码器B的输出Y0~
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年高职第二学年(森林生态旅游)森林导游测试题及答案
- 2025年中职物业管理(物业应用)试题及答案
- 2025年中职智能网联汽车技术(车联网安全防护)试题及答案
- 2025年大学应用气象学(农业气象学)试题及答案
- 婴幼儿教育学知识课件
- 供应商管理制度
- 2026年京东专业技术面试深度问题准备含答案
- 2026年新浪微博校园招聘社交媒体运营岗笔试策划题含答案
- 2026年干部信息技术应用能力试题含答案
- 2026年危重患者监护知识试题含答案
- 某涂料公司销售人员能力发展指导手册
- 2025高三生物二轮复习进度安排
- 2025年陕西延安市直事业单位选聘工作人员历年高频重点提升(共500题)附带答案详解
- 福建省部分地市2025届高中毕业班第一次质量检测 化学试卷(含答案)
- 夫妻债务约定协议书
- 腕关节综合征
- 上海建桥学院简介招生宣传
- 《智慧教育黑板技术规范》
- 《电力建设安全工作规程》-第1部分火力发电厂
- 歌曲《我会等》歌词
- 八年级物理上册期末测试试卷-附带答案
评论
0/150
提交评论