【电子设计】EDA与电子技术课程设计.pptx

上传人:赵** 文档编号:67272164 上传时间:2022-12-24 格式:PPTX 页数:142 大小:1.99MB
返回 下载 相关 举报
【电子设计】EDA与电子技术课程设计.pptx_第1页
第1页 / 共142页
【电子设计】EDA与电子技术课程设计.pptx_第2页
第2页 / 共142页
点击查看更多>>
资源描述

《【电子设计】EDA与电子技术课程设计.pptx》由会员分享,可在线阅读,更多相关《【电子设计】EDA与电子技术课程设计.pptx(142页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、EDA与电子技术课程设计与电子技术课程设计2021/9/121绪论l门电路、触发器等称为逻辑器件;l由逻辑器件构成,能执行某单一功能的电路,如计数器、译码器、加法器等,称为逻辑功能部件;l由逻辑功能部件组成的能实现复杂功能的数字电路称数字系统。2021/9/122图0-1数字系统框图2021/9/123 数字系统设计方法简介数字系统设计方法简介 l明确设计要求,确定系统的输入/输出;l确定整体设计方案;l自顶向下(top-down)的模块化设计方法。2021/9/124数字系统的设计层次 l选用通用集成电路芯片构成数字系统;l应用可编程逻辑器件实现数字系统;l设计专用集成电路(单片系统)。20

2、21/9/125l应用可编程逻辑器件(Programmable Logic Device PLD)实现数字系统设计,是目前利用EDA(Electronic Design Automation)技术设计数字系统的潮流。l这种设计方法以数字系统设计软件为工具,将传统数字系统设计中的搭建调试用软件仿真取代,对计算机上建立的系统模型,用测试码或测试序列测试验证后,将系统实现在PLD芯片或专用集成电路上,这样最大程度地缩短了设计和开发时间,降低了成本,提高了系统的可靠性。2021/9/126PLD简介简介 l数字集成电路的发展过程:电子管晶体管小中规模集成电路(SSI,MSI)大规模集成电路(LSI)超

3、大规模集成电路(VLSIC)具有特定功能的专用集成电路(ApplicationSpecificIntegratedCircuitASIC)2021/9/127为使ASIC的设计周期尽可能短,出现了现场可编程逻辑器件(FieldProgrammableLogicDeviceFPLD),其中应用最广泛的当属CPLD和FPGA。CPLD:Complex Programmable Logic Device FPGA:Field Programmable Gate Array 统称为PLD或CPLD/FPGA。2021/9/128PLD发展过程l早期:PROM、EPROM、EEPROM l70年代中期:

4、ProgrammableLogicarrayPLAl 70年代末:美国MMI公司ProgrammablearrayLogicPALl80年代中期:Altera公司GenericArrayLogicGAL共同特点:低密度PLD,结构简单,设计灵活,规模小,难以实现复杂的逻辑功能。2021/9/129PLD发展过程l80年代中期:Altera公司ErasableProgrammableLogicDeviceEPLDl1985年:Xilinx公司FieldProgrammableGateArrayFPGAl80年代末:Lattice公司提出InSystemProgrammableISP)技术,相继出

5、现了一系列具备在系统可编程能力的复杂可编程逻辑器件(ComplexProgrammab1eLogicDeviceCPLD)。共同特点:高密度、高速度、低功耗结构体系更灵活、适用范围更宽,设计风险为零。2021/9/1210PLD发展过程l90年代以后,高密度PLD在生产工艺、器件的编程和测试技术等方面都有了飞速发展,CPLD的集成度一般可达数千甚至上万门。Altera的EPF10K10每片含62000158000个可使用门,重复擦写次数达10万次以上。2021/9/1211lPLA、PAL、GAL、EPLD、FPGA、ISP-PLD的基本结构在数字电子技术基础的第八章有介绍2021/9/121

6、2EDA软件种类及各自特点软件种类及各自特点 专门用于开发FPGA和CPLD的EDA工具分为五个模块:1 设 计 输 入 编 辑 器(xilinx的 Foundation、Altera的MAX+plus2等);2 仿 真 器(如 Mentor公 司 的 ModelSim,Cadence公司的Verilog-XL,NC-Verilog等);3 HDL综 合 器(Synopsys公 司 的 FPGA Compiler、FPGA Express 等);4适配器(或部局布线器)(如Lattice公司的ispEXPERT 中有自己的适配器);5下载器(编程器)。2021/9/1213MAX+Plus21

7、0.0(学生版)支持的器件 1、EPF10K10,EPF10K10A等2、MAX7000系列(如MAX7000S中的MAX7128)3、EPM9320等2021/9/1214MAX+plus2使用练习l图形输入方式(.gdf文件);lHDL(HardwareDescriptionLanguage)语言输入方式1)VHDL语言(VeryHighSpeedIntergatedCircuitHardwareDescriptionLanguage)2)VerilogHDL语言2021/9/1215设计过程设计输入设计输入图形或HDL语言输入编译编译Compiler项目校验、项目校验、仿真仿真Simul

8、ate编程或下载编程或下载Program或Configure2021/9/1216步骤l进入Windows操作系统,打开MAX+Plus2;l启动FileProjectName菜单,输入设计文件的名称(给出文件存储路径);l点击AssignDevice菜单,选择器件(EPM7128SLC84-6或EPF10K10LC84-4);l启动FileNew菜单,选择GraphicEditor,打开原理图编辑器;2021/9/1217原理图设计输入过程l元器件放置;l在元器件之间添加连线;l添加输入、输出引脚,并给它们命名;l保存原理图。2021/9/1218编译l启动MaxplusII/Compile

9、r菜单,选择Start,开始编译;l若电路有错,编译器停止编译,并显示出错信息;l若电路无错,则编译通过,生成.sof、.pof文件,以备硬件下载或编程时用。l注意:编译只对顶层文件进行注意:编译只对顶层文件进行2021/9/1219时序模拟仿真编译通过后就可进行时序模拟:1、建立波形输入文件:1)打开菜单File/New,选WaveformEditorFile(.scf),OK;2)在波形编辑器窗口的Name下单击鼠标右键,出现浮动菜单,选EnterNodesfromSNF出现对话框;3)在Type区选Inputs和Outputs,单击List按钮,可在其右下方看到设计中的输入输出信号,单击

10、=可将这些信号选到SelectedNodes&Groups区,OK;4)在菜单File中选Save。2021/9/1220时序模拟仿真2、编辑输入节点波形:1)在菜单Options中选中SnaptoGrid和ShowGrid,并打开GridSize设置仿真时间;2)使用绘制图形工具条绘制输入节点波形;3)选File中Save存盘。2021/9/1221 时序模拟仿真3、时序模拟:1)在菜单Maxplus2中选Simulator;2)单击Start,开始模拟;3)模拟完毕,单击OpenScf得模拟结果,可对结果进行检查(注意有动态延时和竞争冒险现象)。2021/9/1222管脚分配l启动Maxp

11、lusII/FloorplanEditor菜单,则显示该设计项目的管脚分配;l用户可根据下载板情况,改变管脚分配。2021/9/1223注意l下载板有两种:1.北京理工达胜科技有限公司生产的下载板,芯片管脚与外围信号没有连接,需在实验中由你连接;2.东南大学东讯通生产的DXT-BIII型EDA实验开发系统,芯片管脚与外围信号已连接好,必须根据下表改变管脚分配.2021/9/1224图1-2-15PLD引脚与外部人工连接EPF10K10LC84-42021/9/1225图1-2-16PLD引脚与外部器件连接锁定图1216PLD管脚与外部器件连接锁定2021/9/1226器件名称器件名称信号名信号

12、名10K10管管脚脚器件名称器件名称信号名信号名10K10管管脚脚输出发光管L12R25数据开关K229输出发光管L12G24数据开关K330输出发光管L1123数据开关K435输出发光管L1022数据开关K536输出发光管L921数据开关K637输出发光管L819数据开关K738输出发光管L718数据开关K839输出发光管L665数据开关K947输出发光管L564数据开关K1048输出发光管L462数据开关K1149输出发光管L361数据开关K1250输出发光管L260数据开关K1351输出发光管L1G59数据开关K1452输出发光管L1R58数据开关K1553数据开关K128数据开关K16

13、542021/9/1227器件名称器件名称信号名信号名10K10管管脚脚器件名称器件名称信号名信号名10K10管管脚脚数码管M4M4A17扬声器SP27M4B16时钟信号CP11M4C11时钟信号CP243M4D10数码管M3M3A9M3B8M3C7M3D6数码管M2M2A5M2B3M2C83M2D81数码管M1M1A80M1B79M1C78M1D732021/9/1228下载l将实验板接口线与计算机并口连接,打开试验箱电源;l启动MaxliusII/Programmer菜单;l如果是第一次使用该软件,启动OptionsHardwareSetup菜单,在HardwareType中选择ByteB

14、laster(MV)。lConfigure即可完成下载。l2021/9/1229注意l若下载后提示下载不成功信息,按以上各步检查是否设置正确,并检查计算机与实验箱硬件连接,排除故障,再次尝试下载;l随时可利用帮助信息(?),解决疑难问题;l相同名字的导线,在电气上相连(P26);l器件可以旋转;l一组输入或一组输出时,可用BUS(组);l改变管脚后,应再编译一次,再下载。2021/9/1230Verilog HDL语言输入方式l进入Windows操作系统,打开MAX+Plus2;l启动FileProjectName菜单,输入设计文件的名称(给出文件存储路径);l点击AssignDevice菜单

15、,选择器件(EPM7128SLC84-6或EPF10K10LC84-4);l启动FileNew菜单,选择TextEditorfile,打开原理图编辑器;l键入程序;l在在FileSave as 保存,生成保存,生成.v文件;文件;l以下步骤同图形输入法。2021/9/1231有关VerilogHDL的详细内容参见第三章(P.98)2021/9/1232l/*/l/MODULE:adderl/FILENAME:add.vl/VERSION:v1.0l/DATE:May5th,2003l/AUTHOR:Peterl/CODETYPE:RTLl/DESCRIPTION:Anadderwithtwoi

16、nputs(1bit),oneoutput(2bits).l/*/lmoduleadder(in1,in2,sum);llinputin1,in2;loutput1:0sum;lwirein1,in2;lreg1:0sum;llalways(in1orin2)lbeginlsum=in1+in2;lendlendmodule模块名(必须和存储时的名称相同)端口列表说明部分模块主体结束行注释部分模块定义行2021/9/1233事件控制的Always语句,一直监测输入信号,只要有变化,就执行下面的块语句。Case语句Case(敏感表达式)值1:块语句1;值2:块语句2;default:块语句n+1

17、;endcaselmoduledecoder(out,in);loutput7:0out;linput2:0in;lreg7:0out;lalways(in)lbeginlcase(in)l3d0:out=8b00000001;l3d1:out=8b00000010;l3d2:out=8b00000100;l3d3:out=8b00001000;l3d4:out=8b00010000;l3d5:out=8b00100000;l3d6:out=8b01000000;l3d7:out=8b10000000;lendcaselendlendmoduled十进制h十六进制b二进制o八进制2021/9/

18、1234lmodulejsq16(q,clk,reset);loutput3:0q;lreg3:0q;linputclk,reset;lalways(posedgeclkornegedgereset)lbeginlif(!reset)q3:0=4b0000;lelselq3:0=q3:0+4b0001;lendlendmoduleif(表达式)块语句1;else块语句2;2021/9/1235注意.v文件描述的功能模块可以生成一个符号,放在用户库中,供其它原理图输入文件调用,调用的方法与从器件库中取元器件的方法相同。生成功能模块的方法为:选择菜单filecreatedefaultsymbol,

19、经过与编译相同的过程后,生成的功能模块被放入用户库,2021/9/1236实验内容和时间安排l星期一上午讲课,完成非门下载先在先在F盘中设置一个自己的文件夹,例:盘中设置一个自己的文件夹,例:F lgll星期一下午星期二:1.2、1.3所有练习l星期二下午4:00讲课:扫描显示电路l星期三:完成1.4所有练习l星期三下午:布置数字系统设计题l星期四星期五:完成数字系统设计一个2021/9/1237扫描显示实验室A2021/9/1238扫描显示电路l用发光管的状态验证设计是否满足要求。在译码器设计时,这种方式是很直观的,但在计数器设计时,这样的验证方式就显得很不直观,尤其当计数器的位数增加时(如

20、百进制计数),太多的发光管将使结果的读出非常困难。2021/9/1239数码管驱动方式lBCD码驱动l直接驱动2021/9/1240数码管BCDBCD 码驱动码驱动输入输出DCBAYaYbYcYdYeYfYg字形000000010010001101000101011001111000100110101011110011011110111111111100110000110110111110010110011101101110111111110000111111111100111110111001111110011100111101100111110001110123456789AbCdEFDC

21、BADCBA2021/9/1241图1-2-16PLD引脚与外部器件连接锁定东南大学实验箱的静态显示方式属于BCD码驱动拨向“静态”2021/9/1242数码管直接驱动输入abcdefg输出字形11111100110000110110111110010110011101101110111111110000111111111110111110111001111110011100111101100111110001110123456789ABCDEF当采用直接驱动方式时,驱动一个数码管需要七个电平信号,如果系统用来显示结果的数码管较多,应考虑数字系统输出信号占用PLD芯片管脚的问题,因为PLD芯片

22、的管脚总数是有限的,例如F10K10,它的管脚总数是84,其中还有一些特定功能的管脚不能给用户使用,能使用的管脚不到60个,所以直接驱动时,必须设法减少占用PLD芯片的管脚的数量。解决的方法是采用动态扫描显示2021/9/1243动态扫描显示动态扫描显示(管脚见表管脚见表1-2-2)1-2-2)拨向“动态”2021/9/1244例1-4-1l设计一个电路,使八个数码管依次同时显示0、1、2、A、B、E、F。2021/9/1245例1-4-1动 态 扫描字 形 显示十六进制计数moduleled(a,b,c,d,e,f,g,D);outputa,b,c,d,e,f,g;input3:0D;reg

23、a,b,c,d,e,f,g;always(D)begincase(D)4d0:a,b,c,d,e,f,g=7b1111110;4d1:a,b,c,d,e,f,g=7b0110000;4d2:a,b,c,d,e,f,g=7b1101101;4d3:a,b,c,d,e,f,g=7b1111001;4d4:a,b,c,d,e,f,g=7b0110011;4d5:a,b,c,d,e,f,g=7b1011011;4d6:a,b,c,d,e,f,g=7b1011111;4d7:a,b,c,d,e,f,g=7b1110000;4d8:a,b,c,d,e,f,g=7b1111111;4d9:a,b,c,d,e

24、,f,g=7b1111011;4hA:a,b,c,d,e,f,g=7b1110111;4hB:a,b,c,d,e,f,g=7b0011111;4hC:a,b,c,d,e,f,g=7b1001110;4hD:a,b,c,d,e,f,g=7b0111101;4hE:a,b,c,d,e,f,g=7b1001111;4hF:a,b,c,d,e,f,g=7b1000111;endcaseendendmodulemoduledecoder(out,in);output7:0out;input2:0in;reg7:0out;always(in)begincase(in)3d0:out=8b00000001;

25、3d1:out=8b00000010;3d2:out=8b00000100;3d3:out=8b00001000;3d4:out=8b00010000;3d5:out=8b00100000;3d6:out=8b01000000;3d7:out=8b10000000;endcaseendendmodule2021/9/1246lmodulesaomiao(reset,clk,clk1,ms1,ms2,ms3,ms4,lms5,ms6,ms7,ms8,a,b,c,d,e,f,g);linputclk,reset,clk1;lreg3:0in1;loutputms1,ms2,ms3,ms4,ms5,

26、ms6,ms7,ms8,a,b,c,d,e,f,g;lregms1,ms2,ms3,ms4,ms5,ms6,ms7,ms8,a,b,c,d,e,f,g;lreg3:0temp,flag;lalways(posedgeclk)lbeginlms1,ms2,ms3,ms4,ms5,ms6,ms7,ms8=8b00000000;lflag=flag+1;lcase(flag)l0:begintemp=in1;ms1=1;endl1:begintemp=in1;ms2=1;endl2:begintemp=in1;ms3=1;endl3:begintemp=in1;ms4=1;endl4:beginte

27、mp=in1;ms5=1;endl5:begintemp=in1;ms6=1;endl6:begintemp=in1;ms7=1;endl7:begintemp=in1;ms8=1;endlendcaselcase(temp)l4d0:a,b,c,d,e,f,g=7b1111110;l4d1:a,b,c,d,e,f,g=7b0110000;l4d2:a,b,c,d,e,f,g=7b1101101;l4d3:a,b,c,d,e,f,g=7b1111001;l4d4:a,b,c,d,e,f,g=7b0110011;l4d5:a,b,c,d,e,f,g=7b1011011;l4d6:a,b,c,d,

28、e,f,g=7b1011111;l4d7:a,b,c,d,e,f,g=7b1110000;l4d8:a,b,c,d,e,f,g=7b1111111;l4d9:a,b,c,d,e,f,g=7b1111011;l4hA:a,b,c,d,e,f,g=7b1110111;l4hB:a,b,c,d,e,f,g=7b0011111;l4hC:a,b,c,d,e,f,g=7b1001110;l4hD:a,b,c,d,e,f,g=7b0111101;l4hE:a,b,c,d,e,f,g=7b1001111;l4hF:a,b,c,d,e,f,g=7b1000111;ldefault:a,b,c,d,e,f,g=

29、7b1111110;lendcaselendlalways(posedgeclk1)lbeginif(!reset)in1=4b0000;lelsebeginin1=in1+1;lendlendlendmodule东南大学实验箱完全用VerilogHDL完成2021/9/1247问题是要把两个计数器输出的个位和十位数分别显示在不同的数码管上,用Sel模块实现。原理是:in1,in2in8为八个数码管的BCD码输入端数据,MS1有效时,in1的数据送MS1显示;MS2有效时,in2的数据送MS2显示;MS8有效时,in8的数据送MS8显示。八组数据可以不全部都有,如此例中,十二进制数的低四位送i

30、n1,高四位送in2,六十进制数的低四位送in3,高四位送in4,其余数据端为空。例例1-4-2 1-4-2 设计一个电路,使两个数码管显示设计一个电路,使两个数码管显示1 1 1212的十二进的十二进制计数,两个数码管显示制计数,两个数码管显示0 0 5959的六十进制计数。的六十进制计数。注意:十二进制计数器自行设计注意:十二进制计数器自行设计2021/9/1248 2021/9/12492021/9/1250case(temp)case(temp)4d0:a,b,c,d,e,f,g=7b1111110;4d0:a,b,c,d,e,f,g=7b1111110;4d1:a,b,c,d,e,f

31、,g=7b0110000;4d1:a,b,c,d,e,f,g=7b0110000;4d2:a,b,c,d,e,f,g=7b1101101;4d2:a,b,c,d,e,f,g=7b1101101;4d3:a,b,c,d,e,f,g=7b1111001;4d3:a,b,c,d,e,f,g=7b1111001;4d4:a,b,c,d,e,f,g=7b0110011;4d4:a,b,c,d,e,f,g=7b0110011;4d5:a,b,c,d,e,f,g=7b1011011;4d5:a,b,c,d,e,f,g=7b1011011;4d6:a,b,c,d,e,f,g=7b1011111;4d6:a,b

32、,c,d,e,f,g=7b1011111;4d7:a,b,c,d,e,f,g=7b1110000;4d7:a,b,c,d,e,f,g=7b1110000;4d8:a,b,c,d,e,f,g=7b1111111;4d8:a,b,c,d,e,f,g=7b1111111;4d9:a,b,c,d,e,f,g=7b1111011;4d9:a,b,c,d,e,f,g=7b1111011;4hA:a,b,c,d,e,f,g=7b1110111;4hA:a,b,c,d,e,f,g=7b1110111;4hB:a,b,c,d,e,f,g=7b00111114hB:a,b,c,d,e,f,g=7b0011111;

33、4hC:a,b,c,d,e,f,g=7b1001110;4hC:a,b,c,d,e,f,g=7b1001110;4hD:a,b,c,d,e,f,g=7b0111101;4hD:a,b,c,d,e,f,g=7b0111101;4hE:a,b,c,d,e,f,g=7b1001111;4hE:a,b,c,d,e,f,g=7b1001111;4hF:a,b,c,d,e,f,g=7b1000111;4hF:a,b,c,d,e,f,g=7b1000111;default:a,b,c,d,e,f,g=7b1111110;default:a,b,c,d,e,f,g=7b1111110;endcaseendca

34、seendendendmoduleendmodulelmodulesel(in1,in2,in3,in4,in5,in6,in7,in8,clk,ms1,ms2,ms3,ms4,ms5,ms6,ms7,ms8,a,b,c,d,e,f,g);linputclk;linput3:0in1,in2,in3,in4,in5,in6,in7,in8;loutputms1,ms2,ms3,ms4,ms5,ms6,ms7,ms8,a,b,c,d,e,f,g;lregms1,ms2,ms3,ms4,ms5,ms6,ms7,ms8,a,b,c,d,e,f,g;lreg3:0temp,flag;lalways(p

35、osedgeclk)lbeginlms1,ms2,ms3,ms4,ms5,ms6,ms7,ms8=8b00000000;lflag=flag+1;lcase(flag)l0:begintemp=in1;ms1=1;endl1:begintemp=in2;ms2=1;endl2:begintemp=in3;ms3=1;endl3:begintemp=in4;ms4=1;endl4:begintemp=in5;ms5=1;endl5:begintemp=in6;ms6=1;endl6:begintemp=in7;ms7=1;endl7:begintemp=in8;ms8=1;endlendcase

36、2021/9/1251End2021/9/1252扫描显示实验室B2021/9/1253扫描显示电路l用发光管的状态验证设计是否满足要求。在译码器设计时,这种方式是很直观的,但在计数器设计时,这样的验证方式就显得很不直观,尤其当计数器的位数增加时(如百进制计数),太多的发光管将使结果的读出非常困难。2021/9/1254数码管驱动方式lBCD码驱动l直接驱动2021/9/1255数码管BCDBCD 码驱动码驱动输入输出DCBAYaYbYcYdYeYfYg字形000000010010001101000101011001111000100110101011110011011110111111111

37、100110000110110111110010110011101101110111111110000111111111100111110111001111110011100111101100111110001110123456789AbCdEFDCBADCBA2021/9/1256数码管直接驱动输入abcdefg输出字形11111100110000110110111110010110011101101110111111110000111111111110111110111001111110011100111101100111110001110123456789ABCDEF当采用直接驱动方式时

38、,驱动一个数码管需要七个电平信号,如果系统用来显示结果的数码管较多,应考虑数字系统输出信号占用PLD芯片管脚的问题,因为PLD芯片的管脚总数是有限的,例如F10K10,它的管脚总数是84,其中还有一些特定功能的管脚不能给用户使用,能使用的管脚不到60个,所以直接驱动时,必须设法减少占用PLD芯片的管脚的数量。解决的方法是采用动态扫描显示2021/9/1257l北理工生产的实验箱,只能用动态扫描方式进行数码管显示。l硬件电路提供了一只3线8线译码器,输入端为sel2,sel1,sel0,输出接各个数码管片选端。3线8线译码器输入端2021/9/1258例1-4-1l设计一个电路,使八个数码管依次

39、同时显示0、1、2、A、B、E、F。2021/9/1259moduleled(a,b,c,d,e,f,g,D);outputa,b,c,d,e,f,g;input3:0D;rega,b,c,d,e,f,g;always(D)begincase(D)4d0:a,b,c,d,e,f,g=7b1111110;4d1:a,b,c,d,e,f,g=7b0110000;4d2:a,b,c,d,e,f,g=7b1101101;4d3:a,b,c,d,e,f,g=7b1111001;4d4:a,b,c,d,e,f,g=7b0110011;4d5:a,b,c,d,e,f,g=7b1011011;4d6:a,b,

40、c,d,e,f,g=7b1011111;4d7:a,b,c,d,e,f,g=7b1110000;4d8:a,b,c,d,e,f,g=7b1111111;4d9:a,b,c,d,e,f,g=7b1111011;4hA:a,b,c,d,e,f,g=7b1110111;4hB:a,b,c,d,e,f,g=7b0011111;4hC:a,b,c,d,e,f,g=7b1001110;4hD:a,b,c,d,e,f,g=7b0111101;4hE:a,b,c,d,e,f,g=7b1001111;4hF:a,b,c,d,e,f,g=7b1000111;endcaseendendmodule例1-4-1译码器

41、2021/9/1260北京理工实验箱modulesaomiaob(reset,clk,clk1,flag,a,b,c,d,e,f,g);inputclk,reset,clk1;reg3:0in1;outputflag,a,b,c,d,e,f,g;rega,b,c,d,e,f,g;reg2:0flag;always(posedgeclk)beginflag=flag+1;case(in1)4d0:a,b,c,d,e,f,g=7b1111110;4d1:a,b,c,d,e,f,g=7b0110000;4d2:a,b,c,d,e,f,g=7b1101101;4d3:a,b,c,d,e,f,g=7b1

42、111001;4d4:a,b,c,d,e,f,g=7b0110011;4d5:a,b,c,d,e,f,g=7b1011011;4d6:a,b,c,d,e,f,g=7b1011111;4d7:a,b,c,d,e,f,g=7b1110000;4d8:a,b,c,d,e,f,g=7b1111111;4d9:a,b,c,d,e,f,g=7b1111011;4hA:a,b,c,d,e,f,g=7b1110111;4hB:a,b,c,d,e,f,g=7b0011111;4hC:a,b,c,d,e,f,g=7b1001110;4hD:a,b,c,d,e,f,g=7b0111101;4hE:a,b,c,d,e

43、,f,g=7b1001111;4hF:a,b,c,d,e,f,g=7b1000111;endcaseendalways(posedgeclk1)beginif(!reset)in1=4b0000;elsebeginin1=in1+1;endendendmodule完全用VerilogHDL完成2021/9/1261问题是要把两个计数器输出的个位和十位数分别显示在不同的数码管上,用Selb模块实现。原理是:in1,in2in8为八个数码管的BCD码输入端数据,sel2.0=000时,左边数码管(ms1)选中,in1送ms1;sel2.0=001时,第二数码管(ms2)选中,in1送ms2;.se

44、l2.0=111时,第八数码管(ms8)选中,in1送ms8;八组数据可以不全部都有,如此例中,十二进制数的低四位送in1,高四位送in2,六十进制数的低四位送in3,高四位送in4,其余数据端为空。例例1-4-2 1-4-2 设计一个电路,使两个数码管显示设计一个电路,使两个数码管显示1 1 1212的十二进的十二进制计数,两个数码管显示制计数,两个数码管显示0 0 5959的六十进制计数。的六十进制计数。注意:十二进制计数器自行设计注意:十二进制计数器自行设计2021/9/12622021/9/1263北京理工实验箱moduleselb(in1,in2,in3,in4,in5,in6,in

45、7,in8,clk,flag,a,b,c,d,e,f,g);inputclk;input3:0in1,in2,in3,in4,in5,in6,in7,in8;outputa,b,c,d,e,f,g;outputflag;rega,b,c,d,e,f,g;reg3:0temp;reg2:0flag;always(posedgeclk)beginflag=flag+1;case(flag)0:begintemp=in1;end1:begintemp=in2;end2:begintemp=in3;end3:begintemp=in4;end4:begintemp=in5;end5:begintemp

46、=in6;end6:begintemp=in7;end7:begintemp=in8;endendcasecase(temp)4d0:a,b,c,d,e,f,g=7b1111110;4d1:a,b,c,d,e,f,g=7b0110000;4d2:a,b,c,d,e,f,g=7b1101101;4d3:a,b,c,d,e,f,g=7b1111001;4d4:a,b,c,d,e,f,g=7b0110011;4d5:a,b,c,d,e,f,g=7b1011011;4d6:a,b,c,d,e,f,g=7b1011111;4d7:a,b,c,d,e,f,g=7b1110000;4d8:a,b,c,d,e

47、,f,g=7b1111111;4d9:a,b,c,d,e,f,g=7b1111011;/*4hA:a,b,c,d,e,f,g=7b1110111;4hB:a,b,c,d,e,f,g=7b0011111;4hC:a,b,c,d,e,f,g=7b1001110;4hD:a,b,c,d,e,f,g=7b0111101;4hE:a,b,c,d,e,f,g=7b1001111;4hF:a,b,c,d,e,f,g=7b1000111;*/default:a,b,c,d,e,f,g=7bzzzzzzz;endcaseendendmodule2021/9/1264End2021/9/12652021/9/12

48、662021/9/1267设计要求l设计一个能进行时、分、秒计时的十二小时制或二十四小时制的数字钟,并具有定时与闹钟功能,能在设定的时间发出闹铃音,能非常方便地对小时、分钟和秒进行手动调节以校准时间,每逢整点,产生报时音报时。2021/9/1268设计提示l主控电路l计数器模块l扫描显示2021/9/1269主控电路A、B:模 式 选 择,AB=00为 模 式 0,计 时 状 态;AB=01为 模 式 1,手 动 校 时 状 态;AB=10为模式2,闹钟设置状态。Turn:turn=0时,在手动校对时,选择调整分钟部分;turn=1时,在手动校对时,选择调整小时部分。Change:在手动校时或

49、闹钟设置模式下,每按一次,计数器加1。Reset:reset=0时,整个系统复位;reset=1时,系统计时或其它特殊功能操作。Reset1:reset1=0时,关闭闹铃信号;reset1=1时,可对闹铃进行设置。状态显示信号(发光管):LD_alert:指示是否设置了闹铃功能;LD_h:指示当前调整的是小时信号;LD_m:指示当前调整的是分钟信号。2021/9/12702021/9/12712021/9/1272设计要求l设计一个能进行拔河游戏的电路。l电路使用15个(或9个)发光二极管表示拔河的“电子绳”,开机后只有中间一个发亮,此即拔河的中心点。l游戏双方各持一个按钮,迅速地、不断地按动

50、,产生脉冲,谁按得快,亮点就向谁的方向移动,每按一次,亮点移动一次。l亮点移到任一方终端二极管时,这一方就获胜,此时双方按钮均无作用,输出保持,只有复位后才使亮点恢复到中心。l由裁判下达比赛开始命令后,甲乙双方才能输入信号,否则,输入信号无效。l用数码管显示获胜者的盘数,每次比赛结束自动给获胜方加分。2021/9/12732021/9/1274设计提示l加/减计数器l译码器l得分计数显示电路2021/9/12752021/9/12762021/9/1277设计要求设计一个可容纳四组参賽的数字式抢答器,每组设一个按钮供抢答使用。抢答器具有第一信号鉴别和锁存功能,使除第一抢答者外的按钮不起作用;设

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁