资源描述:
《传统数字电路设的计方法与现代数字电路设计方法比较》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、传统数字电路设计方法与现代数字电路设计方法比较专业:姓名:学号:摘要:本文对7段数码管显示功能设计分别采用传统数字电路和现代数字电路fpga(veriloghdl)实现。并对设计流程进行对比,从而得出各个方法的优劣。关键字:7段数码管显示;传统数字电路;现代数字电路fpga1.数字系统设计方法传统的数字系统的设计方法是画出逻辑图,这个图包含SSI的门和MSI的逻辑功能,然后人工通过真值表和通过卡诺图进行化简,得到最小的表达式,然后在基于TTL的LSI芯片上实现数字逻辑的功能。现代的数字系统设计是使用硬件描述语言(HardwareDescriptionLanguage,HDL)来设计数字系统。
2、最广泛使用的HDL语言是VHDL和VerilogHDL。这些语言允许设计人员通过写程序描述逻辑电路的行为来设计数字系统。程序能用来仿真电路的操作和在CPLD、FPGA或者专用集成电路ASIC上综合出一个真正的实现2.传统数字系统设计。1.1设计流程传统的数字系统设计基于传统的“人工”方式完成,当设计目标给定后,给出设计目标的真值表描述,然后使用卡诺图对真值表进行化简,得到最小的表达式,然后使用TTL的LSI电路实现最小的表达式,最后使用调试工具和仪器,对系统进行调试。1.2功能实现1)设计目标:在一个共阳极的7段数码管上显示相对应的0-F的值。2)设计目标的真值表描述:图1.2首先给出了七段
3、数码管的符号表示,当其是共阳极时,只有相应的段给低电平‘0’时,该段亮,否则灭。3)使用卡诺图对真值表进行化简,7段数码管e段的卡诺图化简过程如图。得到e段的最简单的逻辑表达式:e=~x3&x0
4、~x3&x2&~x1
5、~x2&~x1&x0。按照步骤3的过程分别得到a,b,c,d,f,g的最简逻辑表达式,这些最简表达式使用积之和(SumofProduct,SOP)和和之积(ProductofSum,POS)表示。4)使用相应的TTL门电路来实现各段的最小表达式。5)将这些门电路连接到7段数码管的各段,并进行调试。3.现代数字系统设计2.1设计流程在FPGA系统设计完成前,有2个不同的阶段:设计
6、阶段、调试和检验阶段,如图所示,设计阶段的主要任务是输入、仿真和实现;调试和检验阶段的主要任务是检验设计,校正发现的错误。2.2功能实现1、设计目标在一个共阳极的7段数码管上显示相对应的0-F的值。2、设计输入7段数码管亮灭控制的最基本原理就是当有电流流过7段数码管a,b,c,d,e,f,g的某一段时,该段就发光。假设输入的数表示为:inputwire[3:0]x,输出的数表示为outputwire[6:0]a_to_g。3、7段数码管逻辑门实现及验证1)打开ISE10.1,新建工程hex7seg_le,设计参数选择:芯片选择Spartan3EXC3S1200E-4FG320,顶层设计选择H
7、DL,仿真器选项选择ISESimulator。2)新建名字为hex7seg_le,类型为VerilogModule的设计文件。按照7段数码管的门级电路描述,完成设计代码输入。3)在处理窗口中,选择并点击Synthesis,工程进行语言检查和综合,确认设计正确。4)建立一个名字为test.tbw,类型为testbenchwaveform的文件。并将工程管理窗口的searchfor指向BehavioralSimulation。在处理窗口中,选择并展开ISESimulator,点击SimulateBehavioralModel。附:7段数码管逻辑门描述代码hex7seg_le.vmodulehex
8、7seg_le(inputwire[3:0]x,outputwire[6:0]a_to_g);assigna_to_g[6]=~x[3]&~x[2]&~x[1]&x[0]//a
9、~x[3]&x[2]&~x[1]&~x[0]
10、x[3]&x[2]&~x[1]&x[0]
11、x[3]&~x[2]&x[1]&x[0];assigna_to_g[5]=x[2]&x[1]&~x[0]//b
12、x[3]&x[1]&x[0]
13、~x[3]&x[2]&~x[1]&x[0]
14、x[3]&x[2]&~x[1]&~x[0];assigna_to_g[4]=~x[3]&~x[2]&x[1]&~x[0]//c
15、x[3]&x[2]
16、&x[1]
17、x[3]&x[2]&~x[0];assigna_to_g[3]=~x[3]&~x[2]&~x[1]&x[0]//d
18、~x[3]&x[2]&~x[1]&~x[0]
19、x[3]&~x[2]&x[1]&~x[0]
20、x[2]&x[1]&x[0];assigna_to_g[2]=~x[3]&x[0]//e
21、~x[3]&x[2]&~x[1]
22、~x[2]&~x[1]&x[0];assigna_to_g[1]=~x