1、第一章 设计指标1.1 设计要求1.2 硬件环境第二章 系统概述2.1 设计思想 2.2 可行性论证. 2.3 各功能的组成2.4 总体工作过程第三章 单元电路设计与分析3.1 各单元电路的选择3.2 设计及工作原理分析第四章 电路的组构与调试4.1 遇到的主要问题 4.2 现象记录及原因分析. 4.3 解决措施及效果 4.4 功能的测试方法、步骤、设备、记录的数据第五章 结束语5.1 对设计题目的结论性意见及进一步改进的意向说明 5.2 总结设计的收获与体会. 附图(电路总图)参考文献第 1 章 设计指标1.1 设计要求(1)系统允许投入 0.5 元和一元 2 种硬币,售出面值 2 元的邮票
2、。(2)当硬币投入后,系统用七段 LED 数码管显示已投入的累计币值。(3)当投币累计等于 2 元是,输出邮票;大于 2 元时,输出邮票并找零。(4)输出信号有效电平维持 3 秒时间,输出信号无效后回到初始状态(累计币值为 0),输出信号期间不能再投币。(5)输出信号有效时蜂鸣器以 0.5 秒鸣响,0.5 秒间隔的方式发出提示音,输出邮票是蜂鸣器的鸣响频率为 1KHz,输出邮票并找零时蜂鸣器的鸣响频率为 2KHz。(6)为保证系统上电时处于初始状态,设置一个状态复位键。1.2.硬件环境控制系统以 FPGA 实现,用两个脉冲按键分别模拟投入 0.5 元和 1元两种硬币,用两个发光二极管分别指示输
3、出邮票和找零。累计币值用两个七段 LED 数码管显示,显示方式由所使用的 FPGA 开发装置电路结构决定。第二章 系统概述2.1 设计思想投币式自动售货机的主要功能是累计投入的币值并作出判断,所以要求电路具有记忆功能,数字电路中的时序逻辑单元电路能够运用电路“状态”记忆输入信号的变化历程,因此本设计的基本思路是由触发器构成的时序“状态机”。存储电路可采用 D 触发器或 JK 触发器实现;组合电路可选择逻辑门、数据选择器或存储器(ROM)实现系统需要记忆的累计币值最多可能有 6 种情况,因此状态数可能达到 6 个。投币式自动销售机可以采用输出受输入信号和电路状态同时控制的米利型时序电路实现,也可
4、以采用输入信号仅控制电路状态转换,而输出由状态控制的莫尔型时序电路实现。前者所需的状态数少,后者的输出信号与系统触发时钟同步。2.2 可行性论证本实验的状态机的激励控制方式有多种方案。方案一:逻辑门实现根据组合逻辑模块的输入、输出的逻辑关系列出真值表,写出各输出函数表达式并化简,如果有逻辑门类型的限制则根据要求变换逻辑关系,然后由逻辑函数式画出逻辑图。实现电路如下:方案二:数据选择器方式方案三:只读存储器方式存储电路采用存储器(ROM)实现就是本实验所用的方法。本方案使电路大大简化,对初学者非常实用. 下面有详细的说明。 2.3 各功能的组成系统电路根据控制功能可分为:状态与状态码确定、输入信
5、号处理、定时电路、状态机的组合逻辑、累计币值显示电路。1、 各模块的主要功能:(1)状态机采用米利型时序电路,四种币值累计需要四个状态记忆。设定状态 A 为厨师状态币值累计为 0 元;状态 B 表示投入币值累计 0.5 元;状态 C 表示已累计 1 元;状态 D 表示已累计 1.5 元;(2)输入信号处理,本设计采用两个按键分别模拟两种不同币值的硬币,产生两路开关量脉冲信号。选择合适的逻辑门可将两路脉冲综合为一路,采用数字单稳态电路对信号进行同步化处理,既能消除按键抖动,又可将综合后的投币信号 M 归化为宽度是一个 CP 脉冲周期的状态触发信号 Y。输入 0.5 元,输出邮票,投入 1 元,输
6、出邮票并找零投入 1 元,输出邮票投入 1 元A B C D无币投入投入0.5 元无币投入投入0.5 元 投入0.5 元无币投入无币投入(3)定时电路,采用定时计数器产生,系统进入状态 E 或 F 时允许循环周期为 3 秒的定时计数器开始计时,当定时时间到时计数器产生溢出信号 Co 触发状态转换。(4)状态机的组合逻辑部分,可以采用只读存储器 ROM 实现,根据状态编码,可列出系统的状态转移表。根据状态转移表以及 ROM的输入,输出连接关系可建立 ROM 的数据存储器表。2.4 总体工作过程 参考设计原理框图如下:A3 A2 A1 A016*4 ROMq3 q2 q1 q0D1Q1D0Q0X1
7、X2CPZ2 Z1第三章 单元电路设计与分析3.1 各单元电路的选择(1) 、信号处理电路如图所示的数字单稳态触发电路可以实现对信号宽度的整形功能。输入信号 x1 , x2 为高电平后的第一个 CP 的上升沿时 out1 和out2 回到低电平。所以当 x1,x2 的正脉冲宽度大于一个 CP 周期时,out1,out2 输出的是一个与 CP 同步,宽度恒定为 1 个 CP 周期(与x1,x2 宽度无关)的正脉冲。另外本电路还加了一个清零端 E,能实现定时 3s 的功能。(2) 、定时控制电路仿真结果:采用同步置数法。置数法是通过控制同步置数端 LD 和预置输入端 DCBA 来实现模 M 计数器
8、。由于置数状态可在 N 个状态中任选,因此实现的方案很多。我选择了同步置 0 法(使用前 M 个状态计数)来实现输出 3S 的信号。选用 S0,S1,S2,S3 共 4 个状态计数,计到 S3 状态时使 LD=0,等下一个 CP 来到时置 0,即返回 S0 状态。虽是模 4 的计数器,但当S3 到达时 3S 引脚就会立即输出一个低电平信号,实现到达 3s 时停止计数,当然,定时 3S 还要靠时能端 P. T 配合控制的。(3)状态机电路触发器的每个激励和电路的每个输出都由存储器的一位数据输出控制端控制,存储器的地址由电路的输入 X 和状态机的状态变量Q 控制。所以,若用只读存储器 ROM 实现
9、组合逻辑模块,存储器的地址码位数是 i+n,输出数据位数是 j+m,存储容量是(j+m)*(i+n)。存储器中每个单元的存储内容是对应电路输入和状态机现态某个组合时的次态和输入逻辑值,所以,存储器中存储的信息就是逻辑状态表。若用 ROM 实现米利型状态机的组合逻辑关系,ROM 的容量为16*4,地址码和数据各为 4 位。如果以电路输入 X2X1 和触发器Q1Q0 控制 ROM 的地址 A3A0,ROM 的数据输出 q3q0 控制电路输出 Z2Z1 和触发器激励 D1D0,根据状态转移表可列 ROM 的存储数据表如下图:状态机电路如上图。由于 ROM 的地址受输入信号控制,当输入改变时 ROM
10、的输出必须马上作出响应,以使状态机的触发脉冲有效时正确的激励信号已建立,所以在建立 ROM 器件时可以不设置端口控制时钟。如果器件型号限定始终必选,则时钟频率应远高于状态机的触发时钟频率,使 ROM 的输出延时可以忽略,呈组合逻辑特性。本电路加入了一个清零端,能手动清零复位。(4) 、显示译码动态扫描控制和累计币值显示电路subdesign yimaqi (data_in30 :input;a,b,c,d,e,f,g :output;)begintabledata_in30 =a,b,c,d,e,f,g;b“0000“ =1,1,1,1,1,1,0;b“0001“ =0,1,1,0,0,0,0
11、;b“0010“ =1,1,0,1,1,0,1;b“0011“ =1,1,1,1,0,0,1;b“0100“ =0,1,1,0,0,1,1;b“0101“ =1,0,1,1,0,1,1;b“0110“ =1,0,1,1,1,1,1;b“0111“ =1,1,1,0,0,0,0;b“1000“ =1,1,1,1,1,1,1;b“1001“ =1,1,1,1,0,1,1;b“1010“ =1,1,1,0,1,1,1;b“1011“ =1,0,0,1,1,1,0;b“1100“ =0,0,0,1,1,1,0;b“1101“ =1,1,0,0,1,1,1;b“1110“ =0,1,1,1,0,1,1;
12、b“1111“ =0,0,0,0,0,0,0;end table;end;根据动态扫描显示电路设计改编,由于第一位的数码管只需要显示 0 和 1 这两个数字,所以输入端 A1 只需要 0000 和 0001 两种状态;第二个数码管只需要显示 0 和 5 这两个数字,所以输入端 A2 只需要0000 和 0101 两个状态;第三,四位数码管需全灭,所以保持全 1 状态即可。(5) 、分频电路首先设计一个分频器,采用 7490 构成 5421BCD 码十进制计数器实现十分频电路,将 FPGA 开发装置上的基准时钟 OSC 分成10MHZ1MHZ 及 2KZ 共 9 个脉冲信号。(6)输出控制Z1
13、表示输出邮票,Z2 表示输出邮票又找零。当 Z1=1,Z2=0 时,选择 C1 输出,即输出 1KHZ 信号;当 Z1=0,Z2=1 时,选择 C3 输出,即输出 2KHZ 信号。当然蜂鸣器由本电路的 OUT 端和 1hz 脉冲共同控制,这样能实现间隔鸣叫的效果。3.2 设计及工作原理分析第 4 章 电路的组构与调试4.1 遇到的主要问题 1、数码管显示乱码2、按键模拟投币后数码管显示一段时间后又清零3、出邮票时不能锁住按键输入。4、按键不能复位5、系统没有通4.2 现象记录及原因分析1、按键后数码管显示含有除了 0,1,5 之外的数字,并且有一定的规律,比如含有 8,或 9. 这是由于译码器
14、编程时赋值有错误,属于编程错误。2、按键模拟投币后数码管显示一段时间后又清零,比如,按 0.5元的按键,数码管显示 0.5 过以后数码管又变成 0.0,。这是由于 D触发器的清零端连接的问题,当按键后 3s 显示正常,但 3s 后就会清零,因为我发现 D 触发器的清零端连接到 3s 的输出端了。所以3S 后就会复位(变成 0.0).3、投币到 2 元后就会出邮票,这个期间再按键数码管还会变化,说明出邮票时没有把输入端锁起来。4、把输入信号的 D 触发器的清零端连接一个负脉冲按键,但按复位键后没有反应,这是因为按键信号到数码管显示有一定的传输时间,在到达数码管显示电路之前输入信号已被锁起来。5、
15、无论怎么按键,数码管都没有反应,系统没有调通,这是因为我的 ROM 制作有错误。4.3 解决措施及效果 1、把译码器的编程正确修改后,数码管显示就正常了。按相应的按键会显示预期的结果。2、把 D 触发器的清零端连接到邮票输出端并加一个反相器,这样只有当到达 2 元,出邮票时才会清零。3、在输入信号处理的 D 清零端引出一个使能端,经过反相器连接到邮票的输出端,连好后,出邮票时就可以锁住按键输入了。4、把复位按键连接到 ROM 后面的 D 触发器的清零端,或者在 3s锁存信号的传输线上加一个 D 触发器,并用低频率的脉冲控制时钟信号。连好后就可以按键复位了。5、找同学进行询问学习后,掌握了制作
16、ROM 的正确方法,重新制作好后,系统就通了。4.4 功能的测试方法、步骤、设备、记录的数据1、测试方法:直接通过按键,观察数码管显示是否正确,LED 显示是否正常,蜂鸣器鸣叫是否正确。2、步骤:(1) 按下 X1(0.5 元 )键显示正常后再按复位键看是否能复位(数码管变成 0.0) ,能复位进入第二步。(2)按下 X1 连续 4 次,正常的话应该是:L1(LED )亮,蜂鸣器以 1KHZ 的频率间隔鸣叫,并且持续 3S,在这 3S 内,按 X1 或X2 键系统都没有变化,如满足上述陈述,说明正常,进入第三步。(3)按下 X2 连续 2 次,观察和步骤二的一样的现象。如果正常,进入第四步进行
17、测试。(4)随机按下 X1 或 X2 直到出现上述现象为止,观察是否满足要求。3、设备:按键,LED,数码管,蜂鸣器。4、记录数据:无第 5 章 结束语5.1 对设计题目的结论性意见及进一步改进的意向说明 此设计已初步实现了自动贩卖邮票的系统的设计,本设计较贴近生活。用按键模拟投币的过程使设计进行了简化,实际运用时加上投币识别模块,并再进行适当的优化,便可以方便人们的生活。当然,本电路的设计还有待进一步的优化。5.2 总结设计的收获与体会 通过本次设计,进一步的了解了数字电路设计的整个过程。从首先分析设计需求到确定整个时序,进行单元模块设计进一步分模块设计,从软件仿真找出错误到程序下载,再进行
18、硬件调试。这整个过程都需要设计人员对于硬件设备,软件设备以及设计需求相当熟悉。在此次设计中,遇到了很多困难,对于 FPGA 硬件不熟悉,整个软件环境又十分陌生,通过老师讲解以及自己仔细翻阅资料,与同学相互讨论才使此次设计最终能比较圆满的完成。根据此次设计,作为设计者也能体验到,任何一个设计都是从无到有,从软件仿真中有许多 errors 和 warnings 最终才一一解决。可以不难发现,清楚设计思路以及排查各个模块与整个模块的衔接及查找 warnings是具有难度的,通过这次设计,也进一步完善了这方面的弱点。解决的方法设计者可以通过进一步清晰设计时序以及各单元功能和增加重要设计部分的测试点做出判断和改正来解决上述问题。设计者需要足够的耐心和细心。此次设计,熟悉了 Quartus II 软件仿真,Altera 的开发平台复习了数字电子技术的相关知识,清晰了对于整个数字电路设计流程以及使作为设计者的我对于数字电路设计更加有信心。附图(电路总图)参考文献基于 FPGA 的数字电路系统设计 崔葛瑾 主编 西安电子科技大学出版社数字电子技术基础 杨松华 冯毛官 孙万蓉 等主编 西安电子科技大学出版社