还剩23页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
《课程设计》教学大纲EDA第一篇《EDA课程设计》教学大纲设计四拔河游戏机
1、设计一个能进行拔河游戏的电路
2、电路使用15个(或9个)发光二极管,开机后只有中间一个发亮,此即拔河的中心点
3、游戏双方各持一个按钮,迅速地、不断地按动,产生脉冲,谁按得快,亮点就向谁的方向移动,每按一次,亮点移动一次
4、亮点移到任一方终端二极管时,这一方就获胜,此时双方按钮均无作用,输出保持,只有复位后才使亮点恢复到中心
5、用数码管显示获胜者的盘数教学提示
1、按钮信号即输入的脉冲信号,每按一次按钮都应能进行有效的计数
2、用可逆计数器的加、减计数输入端分别接受两路脉冲信号,可逆计数器原始输出状态为0000,经译码器输出,使中间一只二极管发灵
3、当计数器进行加法计数时,亮点向右移;进行减法计数时,亮点向左移
4、由一个控制电路指示谁胜谁负,当亮点移到任一方终端时,由控制电路产生一个信号,使计数器停止计数
5、将双方终端二极管点亮〃信号分别接两个计数器的〃使能”端,当一方取胜时,相应的计数器进行一次计数,这样得到双方取胜次数的显示
6、设置一个“复位〃按钮,使亮点回到中心,取胜计数器也要设置一个“复位〃按钮,使之能清零设计五乒乓球比赛游戏机
1、设计一个由甲、乙双方参赛,有裁判的3人乒乓球游戏机
2、用8个(或更多个)LED排成一条直线,以中点为界,两边各代显示模块是由8个位选8个段选构成的显示模块,利用人眼的余晖效果完成动态扫描,显示时间
四、各部分仿真结果测试文件如下module clock_tb;reg sysclk,rst_b;regkey_mode,key_turn,key_change;wire buzzer;wire[7:0]led_sel,led_data;clockI_clock.sysclksysclk.rst_brst_b,.key_modekey_mode.key_ch//angekey_change.key_turnkey_turn,.buzzerbuzzer,.led_selle/d_sel,.led_dataled_data;initial beginsysclk=lbl;rst_b=1bO;〃复位信号#30rst_b=lbl;end always#10sysclk=〜sysclk;//输入的系统时钟,20ns的周期endmodule
五、调试及总结本次课程设计总共花费了四天左右的时间,设计了自动打铃系统通过这次的设计更加熟悉了对EDA技术的了解和认识,在中也发现许多不足的地方使用了自顶而下的设计方法,使得设计更加的简单和明了在调试过程中,有些代码的设计不规范性,导致时序相当缓慢,甚至编译综合都会报错在不断的修改下,发现时序电路和组合逻辑最好分开写,这样便于查错,和修改代码毕竟Verilog HDL语言不同于C语言,不能以软件的思想来设计,而是要利用电路的思想来编程,这样可以更好的节省资源,使得时序也比较的简单明了在以后的学习及程序设计当中,我们一定要倍加小心,在程序出现不正常运行的情况下要耐心调试,尽量做到精益求精最后通过这次EDA方面的课程设计,提高了我们对EDA领域及通信电路设计领域的认识,有利于培养我们在通信电路EDA方面的设计能力有利于锻炼我们独立分析问题和解决问题的能力
六、文献参考⑴.王金明、左自强编,《EDA技术与Verilog设计》科学出版社
2008.8
[2]杜慧敏、李宥谋、赵全良编,《基于Verilog的FPGA设计基础》西安电子科技大学出版社
2006.2
[3].韩彬编,《从零开始走进FPGA世界》杭州无线电爱好者协会出版社
2011.
8.20
七、附录(实物图及源码)module clock//Inputsysclk,rst_b,key_mode,key_change,key_tum,//Outputbuzzerjed_sel,led_data;input sysclkrst_b;//sysclk—global systemclock,rst_b—globalzreset signalinput key_mode;//mode choose.O—Timingfunction.1--Alarm clockfunction.2—adjust functioninputkey_turn;//choose adjustminute orhour inputkey_change;//countadd1output buzzer;//device buzzeroutput[7:0]led_sel;//led tubebitchooseoutput[7:0]led_data;//led_tube8bit datachooseparameter init_hour=8,hl2;parameter init_min=8fh59;parameter init_sec=8h50;〃initial time:12:59:50parameterinit_alarm_hour=8h06;parameter init_alarm_min=8h30;//initialalarm time:06:30:0parameter Count_ls=28,h2FA_F07F;//counttime Is;reg[7:0]sec;reg[7:0]min;reg[7:0]hour;reg[3:0]min_L;//minute low4bit reg[3:0]min_H;//minute high4bit reg[3:0]hour_L;//hour low4bit reg[3:0]hour_H;//hour high4bit reg[23:0]key_time;//press keyaway shakereg key_mode_n;//presskey_mode nextstate reg key_change-n;//press key_change nextstateregkey_turn_n;//press key_turn nextstate wirekey_m ode_press;//su reButton presskey_mode wirekey_turn_press;//surebutton presskey_turn wirekey_change_press;//sure buttonpresskey_changealways@posedge syscIkkey_mode_n=key_mode;assignkey_mode_press=!key_mode8ikey_mode_n;always@posedge sysclkkey_turn_n=keyjurn;assign key_turn_press=!key_tu rnkey_tu rn_n;a Iways@posedgesyscIkkey_change_n二key_change;assign key_change_press=!key_changekey_change_n;always@posedge sysclkor negedge rst_bbeginif!rst_bkey_time=24h0;else ifkey_time!=24hOkeyjime=key_time+24hl;else ifkey_time==24,h0key_mode_press||key_change_press||key_turn_presskey_time=key_time+24fhl;endreg[1:0]mode_num;//key mode..O-Timing function.1--Alarmclock function.2—adjust functionalways@posedge sysclkornegedge rst_bbegin if!rst_bmode_num=2b00;elseifmode_num==2,h3mode_num=2h0;else ifkey_mode_presskey_time==24hOmode_num=mode_num+2hl;endalways@*begin ifmode_num二=2,hlbeginmin=init_alarm_min;hour=init_alarm_hour;end elsebeginmin={min_H min_L};hour={hour_H,hour_L};end end/reg fm;//choose turnhour orminute always@posedge sysclkor negedgerst_bbegin if!rst_bfm=lb0;else ifkey_turn_pressmode_num==2h2key_time==24,hOfm=〜fm;endreg[27:0]time_cnt;///count timereg[27:0]time_cnt_n;//counttime nextstate always@posedge sysclkor negedgerst_bbeginif!rst_btime_cnt=28h0;else time_cnt=time_cnt_n;endalways@*begin iftime_cnt==Count_lstime_cnt_n=28h0;else ifmode_num!=2,h0time_cnt_n=time_cnt;elsetime_cnt_n=time-cnt+28fhl;endreg[3:0]sec_L;//second low4bit reg[3:0]sec_H;//second high4bit wiresec_cb;//second carrybit signalassign sec_cb=sec_L==4h9sec_H==4h5;always@posedge sysclkor negedgerst_bbegin if!rst_bbeginsec_L=init_sec[3:0];sec_H=init_sec[7:4];end else ifsec_L==4h9sec_H!=4h5time_cnt==Count_lsbeginsec_L=4hO;sec_H=sec_H+4hl;end else ifsec_cbtime_cnt==Count_lsbeginsec_L=4fhO;sec_H=4fh0;end else iftime_cnt==Count_lssec_L=sec_L+4hl;endwire min_cb;//minute carrybit signalassign min_cb=min_L==4h9min_H==4h5;always@posedge sysclkor negedgerst_bbegin if!rst_bbeginmin_L=init_min[3:0];min_H=init_min[7:4];end elseifsec_cb8imin_L!=4,h9time_cnt==Count_lsmin_L=min_L+4hl;else ifsec_cbmin_L==4h9min_H!=4h5time_cnt==Count_lsbeginmin_L=4hO;min_H=min_H+4hl;end elseifsec_cbmin_cbtime_cnt==Count_lsbeginmin_L=4h0;min_H=4h0;end else iffmmode_num==2,h2key_change_presskey_time==24hOmin_L!=4,h9min_L=min_L+4hl;else iffm8imode_num==2h2key_change_presskey_time==24,hOmin_L==4,h9min_H!=4h5beginmin_L=4,h0;min_H=min_H+4hl;end elseiffmmode_num二二2,h2key_change_presskey_time==24hOmin_L==4h9min_H==4,h5beginmin_L=4hO;min_H=4,hO;end endalways@posedge sysclkornegedgerst_bbegin if!rst_bbeginhour_L=init_hour[3:0];hour_H=init_hour[7:4];end elseifsec_cbmin_cbhour_L!=4h9hour_H!二4,h2time_cnt==Count_lshour L=hour L+4hl;elseifsec_cbmin_cbhour_L!=4h3hour_H=二4,h2time_cnt==Count_lshour_L=hour_L+4hl;elseifsec_cbmin_cbhour_L==4h
9.hour_H!=4h2time_cnt==Count_lsbeginhour_L=4hO;hour_H=hour_H+4hl;end elseifsec_cbmin_cbhour_L==4h3hour_H==4,h2time_cnt==Count_lsbeginhour L=4h0;hour H=4h0;end elseif!fmmode_num==2,h2key_change_presskey_time==24,hO8ihour_L!=4h9hour_H!=4h2hour_L=hour_L+4hl;elseif!fmmode_num==2,h2key_change_press8ikey_time二二24,hOhour_L!=4h3hour_H==4h2hour_L=hour_L+4hl;elseif!fmmode_num==2h2key_change_presskeyJ:ime=二24hOhour_L==4h9hour_H!=4h2beginhour L=4,h0;hour H=hour H+4hl;end elseif!fmmode_num2,h2key_change_presskey_time二二24hOhour_L==4h3hour_H==4,h2begin hourL=4fh0;hour H=4h0;end endwirebuzzer_en;assign buzzer_en=init_alarm_min=={min_H,min_L}init_alarm_hour=={hour_H,hour_L};led_tubeI_led_tube.sysclksysclk,.rst_brst_b,.scan_time24hlF090,.dataO{l,hl,sec_L},.datal{l,hl sec_H},.data2{l,hl4,hA}„data3{l,,/hl min[3:0]},.data4{l,hl,min[7:4]}.data5{lhl,4,hA},.data6{l,//hl hour[3:0]}.data7{lhl hour[7:4]},.led_dataled_data,.led_sel///led_sel;buzzerI_buzzer.sysclksysclk.rst_brst_b,.buzzer_enbuzzer_en.buzze//rbuzzer;endmodule第四篇EDA课程设计《电子系统设计自动化》课程设计报告学院机电工程学院题目数字时钟电路设计课程《电子系统设计自动化》课程设计专业班级电信10级2班学生姓名刘星秦玉杰王艳艳学号100410103510041010361004101038完成日期2013年12月27日摘要EDAElectronic DesignAutomation电子设计自动化,就是以大规模可编程器件为设计载体,以硬件描述语言为系统逻辑描述的主要表达方式,通过相关的软件,自动完成用软件方式设计的电子系统到硬件系统,最终形成集成电子系统或专用集成芯片本次实习利用QuartusII为设计软件、VHDL为硬件描述语言,结合所学的数字电路的知识设计一个24时多功能数字钟,具有正常时、分、秒计时,动态显示,清零、快速校时校分、整点报时、花样显示等功能利用硬件描述语言VHDL对设计系统的各个子模块进行逻辑描述,采用模块化的设计思想完成顶层模块的设计,通过软件编译、逻辑化简、逻辑分割、逻辑综合优化、逻辑布线、逻辑仿真,最终将设计的软件系统下载设计实验系统,对设计的系统进行硬件测试
一、课程设计基本要求和任务《EDA课程设计》是继《模拟电子技术基础》、《数字电子技术基础》课程后,电信专业学生在电子技术实验技能方面综合性质的实验训练课程,是电子技术基础的一个部分
1.1目的和任务1通过课程设计使学生能熟练掌握一种EDA软件QUARTUSII的使用方法,能熟练进行设计输入、编译、管脚分配、下载等过程,为以后进行工程实际问题的研究打下设计基础2通过课程设计使学生能利用EDA软件QUARTUSII进行至少一个电子技术综合问题的设计,设计输入可采用图形输入法或VHDL硬件描述语言输入法3通过课程设计使学生初步具有分析、寻找和排除电子电路中常见故障的能力4通过课程设计使学生能独立写出严谨的、有理论根据的、实事求是的、文理通顺的字迹端正的课程设计报告
1.2功能要求1具有时、分、秒计数显示功能,以24小时循环计时2时钟计数显示时有LED灯的花样显示3具有调节小时、分钟、秒及清零的功能4具有整点报时功能
1.3总体方框图本系统可以由秒计数器、分钟计数器、小时计数器、整点报时、分的调整以及小时的调整和一个顶层文件构成采用自顶向下的设计方法,子模块利用VHDL语言设计,顶层文件用原理图的设计方法显示小时采用24进制,而分钟均是采用6进制和10进制的组合
1.4设计原理数字钟电路设计要求所设计电路就有以下功能时、分、秒计时显示,清零,时、分调节,整点报时及花样显示分、秒计时原理相似,可以采用60进制BCD码计数器进计时;小时采用24进制BCD码进行计时;在设计时采用试验电路箱上的模式7电路,不需要进行译码电路的设计;所设计电路具有驱动扬声器和花样显示的LED灯信号产生试验箱模式7的电路如图一所示图一模式七实验电路图
1.5性能指标及功能设计1时钟计数完成时、分、秒的正确计时并且显示所计的数字;对秒、分——60进制计数,即从0到59循环计数,时钟一一24进制计数,即从0到23循环计数,并且在数码管上显示数值
2.2模块划分自顶向下分解
2.3模块描述时钟计时模块完成时、分、秒计数,及清零、调节时和分钟的功能时、分、秒计数的原理相同,均为BCD码输出的计数器,其中分和秒均为六十进制BCD码计数器,小时为二十四进制BCD码计数器设计一个具有异步清零和设置输出功能的六十进制BCD码计数器,再设计一个具有异步清零和设置输出功能的二十四进制计数器,然后将它们通过一定的组合构成时钟计时模块各个输入/输出端口的作用为lclk为计时时钟信号,reset为异步清零信号;2sethour为小时设置信号,setmin为分钟设置信号;3daout[5〃0]为小时的BCD码输出,daout[
6...0]为秒和分钟的BCD码输出,enmin和enhour为使能输出信号4在时钟整点的时候产生扬声器驱动信号和花样显示信号由时钟计时模块中分钟的进行信号进行控制当contr_en为高电平时,将输入信号dk送到输出端speak用于驱动扬声器,同时在elk的控制下,输出端lamp[
2..O]进行循环移位,从而控制LED灯进行花样显示输出控制模块有扬声器控制器和花样显示控制器两个子模块组成
2.4顶层电路图顶层文件是由四个模块组成,分别是时、分、秒计数器和报警的VHDL语言封装而成经过锁定引脚再重新编译获得如下顶层原理电路图
三、方案实现
3.1各模块仿真及描述1秒计数器模块仿真图将标准秒信号送入”秒计数器〃,秒计数器采用60进制计数器,每累计60秒发出一个分脉冲信号,该信号将作为分计数器的时钟脉冲,daout代表秒输出2分计数器电路仿真图也采用60进制计数器,每累计60分钟,发出,一个时脉冲信号,该信号将被送到时计数器daout端口代表分钟输出3小时计数器电路仿真图时计数器采用12进制计时器,可实现对24小时累计每累计12小时,发出一个脉冲信号引脚配置完成后再进行一次全程编译,无误则可以下载到试验箱上进行硬件测试硬件验证的方法如下选择实验模式7;时钟脉冲elk与clockO1024Hz信号相连;键8和键5均为低电平,时钟正常计时,数码管1和2显示秒,数码管4和5显示分钟,数码管7和8显示小时;键8为高电平时,时钟清零;键5为高电平时,按下键7和键4进行调时调分操作;当时钟为整点的时候,三个发光二极管进行循环移位操作,同时扬声器发声
五、心得体会经过源程序的编辑、逻辑综合、逻辑适配、编程下载成功后,在EDA实验开发系统进行硬件验证时却发现实验结果不正确,扬声器无法发声经检查,自己设计的管脚文件有错将管脚锁定文件修改后,重新进行逻辑适配、编程下载成功后,实验结果仍然不正确,百思不得其解无奈之下,决定重头开始排查每一步的细节,确定各个模块的功能完全实现并且顶层模块功能正确修改之后,重新进行逻辑适配、编程下载验证,实验结果完全正确这次EDA课程设计历时两个星期,在整整两个星期的日子里,不仅巩固了以前所学过的知识,而且学到了很多书本上学不到的知识,同时锻炼了自己的能力,使自己对以后的路有了更加清楚的认识,对未来有了更多的信心这次课程设计,进一步加深了我对EDA的了解,使我对QuartusII的基本操作有所了解,使我对应用软件的方法设计硬件系统有了更加浓厚的兴趣通过这次课程设计,我懂得了理论与实际相结合的重要性,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合,从实践中得出结论,才能真正提高自己的实际动手能力和独立思考的能力在设计的过程中,我遇到许多问题,毕竟是第一次应用VHDL进行硬件电路系统的设计,许多EDA的知识还没有充分的掌握,遇到困难也是在所难免的,同时发现了自己的不足之处学习知识表面化,没有深入了解它们的原理总的来说,这次设计的数字时钟电路还是比较成功的,尽管在设计中遇到了很多问题,最后在老师的辛勤指导、同学的帮助和自己不断思考下,终于迎刃而解,有点小小的成就感,觉得平时所学的知识有了实用的价值,达到了理论与实际相结合的目的最后,对给过我帮助的所有同学和指导老师再次表示忠心的感谢!参考文献[][]1崔健明.《电子电工EDA仿真技术》高等教育出版社2000年2卢[]杰,赖毅.《VHDL与数字电路设计》科学出版社2001年3潘松,黄继业.《EDA[]技术实用教程》科学出版社2002年4朱运利.[]《EDA技术应用》电子工业出版社2004年5张明.《VHDL实用教程》电子科技大学出版社1999年⑹彭介华.《电子技术课程设计与指导》高等教育出版1997年LIBRARYIEEE;USE IEEE.STD LOGIC1164,ALL;USEIEEE.STD LOGICUNSIGNED.ALL;ENTITY minuteISPORTelk,clkl/esetsethourlN STD_LOGIC;enhour:OUTSTD_LOGIC;daout:OUT STD_LOGIC_VECTOR6DOWNTO0;ENDENTITY minute;ARCHITECTURE funOF minuteIS SIGNALcount:STD_LOGIC_VECTOR6DOWNTO0;SIGNAL enhour_l,enhour_2:STD_LOGIC;-enmin_l为59分时的进位信号BEGIN-enmin_2由elk调制后的手动调时脉冲信号串daout=count;enhour_2=sethourand clkl;—sethour为手动调时控制信号,高电平有效enhour=enhour_l orenhour_2;PROCESSclk reset,sethourBEGINzIFreset=OTHEN-若reset为0,则异步清零count=//0000000/z;ELSIFclkevent anddk=TTHEN--否则,若elk上升沿到IFcount3DOWNTO0=1001THEN--若个位计时恰好到1001即9IFcount16#60#THEN-又若count小于16#60#,即60IFcount=1011001THEN-又若已到59D enhour」=T;--贝U置进位为1count=0000000--count复0ELSE表参赛双方的位置,其中一只点亮的LED指示球的当前位置,点亮的LED依此从左到右,或从右到左,其移动的速度应能调节)
3、当球(点亮的那只LED运动到某方的最后一位时,参赛者应能果断地按下位于自己一方的按钮开关,即表示启动球拍击球若击中,则球向相反方向移动;若未击中,则对方得1分
4、一方得分时,电路自动响铃3秒,这期间发球无效,等铃声停止后方能继续比赛
5、设置自动记分电路,甲、乙双方各用2位数码管进行记分显示,每计满21分为1局
6、甲、乙双方各设一个发光二极管,表示拥有发球权,每隔5次自动交换发球权,拥有发球权的一方发球才有效教学提示
1、用双向移位寄存器的输出端控制LED显示来模拟乒乓球运动的轨迹,先点亮位于某一方的第1个LED,由击球者通过按钮输入开关信号,实现移位方向的控制
2、也可用计数译码方式实现乒乓球运动轨迹的模拟,如利用加/减计数器的2个时钟信号实现甲、乙双方的击球,由表示球拍的按钮产生计数时钟,计数器的输出状态经译码驱动LED发亮
3、任何时刻都保持一个LED发亮,若发亮的LED运动到对方的终点,但对方未能及时输入信号使其向相反方向移动,即失去1分
4、控制电路决定整个系统的协调动作,必须严格掌握各信号之间的关系设计六交通信号等控制器
1、设计一个交通信号灯控制器,由一条主干道和一条支干道汇合成十字路口,在每个入口处设置红、绿、黄三色信号灯,红灯亮禁止通行,绿灯亮允许通行,黄灯亮则给行驶中的车辆有时间停在禁行线外
2、红、绿、黄发光二极管作信号灯,用传感器或逻辑开关作检测车辆是否到来的信号
3、主干道处于常允许通行的状态,支干道有车来时才允许通行主干道亮绿灯时,支干道亮红灯;支干道亮绿灯时,主干道亮红灯count=count+7;--若count未至!]59D,则加7,即作“力口6校正”END IF;--使前面的16#60#的个位转变为8421BCD的容量ELSEcount=,,0000000M;-count复0有此句,则对无效状态电路可自启动ENDIF;-END IFcount16#60#ELSIFcount16#60#THEN count〈二count+l;—若count16#60#贝U count力口1enhour_l=0after100ns;--没有发生进位ELSE count=0000000”否则,若count不小于16#60#count复0END IF;-END IFcount3DOWNTO0=1001END IF;-END IFreset=O ENDprocess;END fun;
3、时计数器模块的VHDL语言LIBRARY IEEE;use IEEE.STD LOGIC
1164.ALL;USE IEEE.STD LOGICUNSIGNED.ALL;IFclkevent andelk二TTHEN IFdain=0000000THENspeak=countll;IFcountl=10THEN countl=00countl为三进制加法计数器ELSE countl=countl+l;END IF;END IF;END IF;ENDPROCESS speaker;lamper:PROCESSclkBEGINIFrising_edgeclkTHEN IFcount=10THENIFcount=00〃THEN lamp=,,001//ELSIFcount=01THENlamp=M010H;ELSIFcount=10HEN lamp=100;ENDIF;count=count+l;ELSE count=00;END IF;END IF;END PROCESSlamper;END fun;循环点亮三只灯第五篇《EDA课程设计》《EDA课程设计》课程设计题目基于单片机的温湿度采集系统姓名XXX学班时地号.XXXX级XXXX间
2014.
4.21~
2013.
5.5占・/\\\•XXXXX指导老师XXXXX目录
一、电路原理图2
二、电路PCB图(或实物图)2
三、电路效果图3
四、设计总结3附录(单片机源代码)4
一、电路原理图
二、电路PCB图(或实物图)
三、电路效果图
四、设计总结EDA的实验还是挺有趣的,比较讲究动手能力,当然也不能忽略团体合作总的来说本次实验还是成功了,虽然每个环节都遇到了困难在生成原理图的过程中,就曾把导线画成了Placeline而不是Placewire,还有芯片的引脚应该用NET符号而不是用文本符号,所以这些错误都导致我花在原理图上的时间多了点而在生成PCB电路图的过程中遇到的困难则是自动布线之后,还有电源的几个脚需要手动布线,所以各个元件之间的位置要布置好,以免发生短路腐蚀的时候,由于腐蚀的时间太长了,有些碳都化开了,导致里面的铜被腐蚀掉了,所以又为我的工作增加了困难在焊接的时候,要注意元件的正负极,还要检测锡是否都与那些铜连接上了最终把LED和DHT11的程序烧进去就行了本次实验我还是能多多少少学到点什么的,总的来说还是希望能有多一点这样的实习附录(单片机源代码)//51单片机控制温湿度传感器DHT11LCD1602上显示当前机最小系统〃LCD读进去写出来#include#include typedef unsigned charBYTE;typedefunsigned intWORD;#define uintunsignedint〃定义无符号整型#define ucharunsigned chartypedef bitBOOL;〃此声明一个布尔型变量即真或假〃uchar data_byte,num,i;ucharRH,RL,TH,TL,flag;uchar shuzi
[4];unsigned charcodenuml[ll]={0xc0,0xf90xa4,0xb0,0x99,,0x92,0x82,0xf8,0x80,0x90,0x7f};sbit dht=P2A4;//dhtlldata端接单片机的P2八4□//***************************************************延时模块〃延时1毫秒void delayl〃一个for循环大概需要8个多机器周期〃一个机器周期为lus晶振为12MHz也就是说本函数延时8us}uchar i;whilems—fori=0;i110;i++;uchar i;fori=0;il;i++;void displayvoid{//ifflag==O//{P2=0x07;P0=numl[shuzi
[2]];delayl;////ifflag==l//{P2=0x0b;P0=numl[shuzi
[3]];delayl;//}//ifflag==2//{P2=0x0d;PO=numl[shuzi[O]];delayl;//}//ifflag==3//{P2=0x0e;P0=numl[shuzi[l]];delayl;//}}I/**************************d ht]]测试某块*************************************ii voidstart〃开始信adht=l;delayl;〃主机发出8us高电平,开始信号开始发出dht=O;delay25;//主机把总线拉低必须大于18msDHT11能检测到起始信号dht=l;//delaylO;〃以下三个延时函数差不多为24usdelayl;delayl;20-40usuchar receive_byte〃接收一个字节8位〃{uchar i,temp;fori=0;i8;i++〃接收8bit的数据while!dht;〃等待40-50us的低电平开始信号结束delayl;〃开始信号结束之后延时26us-28usdelayl;delayl;temp=O;〃时间为26us-28usifdht==ltemp=l;〃如果26us-28usO数据为Twhiledht;//O为26us-28usT为70us}data_byte=l;//data_byte|=temp;〃接收每一位的数据,相或保存数据return data_byte;}void receive”接收数据〃uchar T_H,T_L,R_H,R_L,check,num_check,i;startO;〃开始信号〃调用开始信号子函数dht=l;〃主机设为输入判断从机DHT11响应信号if!dht〃判断从机是否有低电平响应信号〃{while!dht;〃判断从机发出40us的低电平响应信号是否结束〃whiledht;〃判断从机发出40us的高电平是否结束如结束则从机进入发送数据状态,主机进入数据接收状态数〃两个while语句加起来就是DHT11的响应信号R_H=receive_byte;〃湿度高位调用接受一个字节的子函R_L二receive_byte;〃湿度低位T_H=receive_byte;〃温度高位T_L二receive_byte;〃温度低位check=receive_byte;〃校验位〃结束信号dht=O;〃当最后一bit数据接完毕后主机拉低电平50us//fori=0;i7;i++〃差不多8us的延时delaylQ;dht=l;〃总线由上拉电阻拉高进入空闲状态num_check=R_H+R_L+T_H+T_L;ifnum_check二二check〃判断读到的四个数据之和是否与校验位相同RH=R H;RL=R L;TH=T H;TL=T L;checks num_check;}shuzi
[0]=RH/10;shuzi
[1]=RH%10;shuzi
[2]=TH/10;shuzi
[3]=TH%10;}}void013吊〃主函数模块〃{whilel〃进入死循环receive;〃接收数据displayO;}}
4、主、支干道均有车时,两者交替允许通行,主干道每次放行45秒,支干道每次放行25秒,设立45秒、25秒计时、显示电路
5、在每次由绿灯亮到红灯亮的转换过程中,要亮5秒黄灯作为过渡,使行驶中的车辆有时间停到禁行线外,设立5秒计时、显示电路教学提示
1、主、支干道用传感器检测车辆到来情况,实验电路用逻辑开关代替
2、选择1HZ时钟脉冲作为系统时钟
3、45秒、25秒、5秒定时信号可用顺计时,也可用倒计时,计时起始信号由主控电路给出,每当计满所需时间,即向主控电路输出时间到信号,并使计数器清零,由主控电路启、闭三色信号灯或启动另一计时电路
4、主控电路是核心,这是一个时序电路,其输入信号为车辆检测信号(A,()B,;45秒、25秒、5秒定时信号C,D,E,其输出状态控制相应的三色灯主控电路可以由两个JK触发器和逻辑门构成,其输出经译码后,控制主干道三色灯R、G、Y和支干道三色灯r、g、V设计七电子密码锁
1、设计一个密码锁的控制电路,当输入正确代码时,输出开锁信号以推动执行机构工作,用红灯亮、绿灯熄灭表示关锁,用绿灯亮、红灯熄灭表示开锁;
2、在锁的控制电路中储存一个可以修改的4位代码,当开锁按钮开关(可设置成6位至8位,其中实际有效为4位,其余为虚设)的输入代码等于储存代码时,开锁;
3、从第一个按钮触动后的5秒内若未将锁打开,则电路自动复位并进入自锁状态,使之无法再打开,并由扬声器发出持续20秒的报警信号教学提示
1、该题的主要任务是产生一个开锁信号,而开锁信号的形成条件是,输入代码和已设密码相同实现这种功能的电路构思有多种,例如,用两片8位锁存器,一片存入密码,另一片输入开锁的代码,通过比较的方式,若两者相等,则形成开锁信号
2、在产生开锁信号后,要求输出声、光信号,声音的产生由开锁信号触动扬声器工作,光信号由开锁信号点亮LED指示灯;
3、用按钮开关的第一个动作信号触发一个5秒定时器,若5秒内无开锁信号产生,让扬声器发出特殊音响,以示警告,并输出一个信号推动LED不断闪烁设计八彩灯控制器L设计一个彩灯控制器,使彩灯(LED管)能连续发出四种以上不同的显示形式;
2、随着彩灯显示图案的变化,发出不同的音响声教学提示
1、彩灯显示的不同形式可由不同进制计数器驱动LED显示完成;
2、音响由选择不同频率CP脉冲驱动扬声器形成设计九脉冲按键电话显示器L设计一个具有8位显示的电话按键显示器;
2、能准确地反映按键数字;
3、显示器显示从低位向高位前移,逐位显示按键数字,最低位为当前输入位;
4、*设置一个重拨键,按下此键,能显示最后一次输入的电话号码;
5、*挂机2秒后或按熄灭按键,熄灭显示器显示教学提示
1、利用中规模计数器的予置数功能可以实现不同的按键对应不同的数字;
2、设置一个计数器记录按键次数,从而实现数字显示的移位设计十简易电子琴
1、设计一个简易电子琴;
2、利用实验箱的脉冲源产生1,2,3共7个或14个音阶信号•
3、用指示灯显示节拍;
4、*能产生颤音效果教学提示
1、各音阶信号由脉冲源经分频得到设计十一出租车自动计费器
1、设计一个出租车自动计费器,具有行车里程计费、等候时间计费、及起,价三部分用四位数码管显示总金额,最大值为9999元;
2、行车里程单价1元/公里,等候时间单价05元/10分钟,起价3元(3公里起价)均能通过人工输入
3、行车里程的计费电路将汽车行驶的里程数转换成与之成正比的脉冲数,然后由计数译码电路转换成收费金额,实验中以一个脉冲模拟汽车前进十米,则每100个脉冲表示1公里,然后用BCD码比例乘法器将里程脉冲乘以每公里单价的比例系数,比例系数可由开关预置例如单价是l0元/公里,则脉冲当量为001元/脉冲o
4、用LED显示行驶公里数,两个数码管显示收费金额教学提示:
1、等候时间计费需将等候时间转换成脉冲个数,用每个脉冲表示的金额与脉冲数相乘即得计费数,例如100个脉冲表示10分钟,而10分钟收费05元,则脉冲当量为005元/脉冲,如果将脉冲当量设置成与行车里程计费相同(001元/脉冲),则10分钟内的脉冲数应为500个
2、用LED显示等候时间,两个数码管表示等候时间收费金额
3、用加法器将几项收费相加,P=P1+P2+P3,
4、P1为起价,P2为行车里程计费,P3为等候时间计费,用两个数码管表示结果设计十二洗衣机控制器
1、设计一个电子定时器,控制洗衣机作如下运转定时启动-正转20秒-暂停10秒-反转20秒一暂停10秒一定时未到回到正转20秒一暂停10秒一……,定时到则停止;
2、若定时到,则停机发出音响信号;
3、用两个数码管显示洗涤的预置时间(分钟数),按倒计时方式对洗涤过程作计时显示,直到时间到停机;洗涤过程由开始信号开始;
4、三只LED灯表示正转〃、反转〃、暂停三个状态教学提示:Is设计20秒、10秒定时电路
2、电路输出为正转、反转、暂停三个状态
3、按照设计要求,用定时器的时间到’信号启动相应的下一个定时器工作,直到整个过程结束建议选用教材和参考书目选用教材《电子技术实验指导书》,李国丽,朱维勇主编中国科技大学出版社主要参考书《电子技术基础模拟部分》(第四版),康华光主编,高教出版社《数字电子技术基础》(第四版),阎石主编,高教出版社第二篇《EDA技术》课程设计教学大纲成都大学课程设计教学大纲课程设计名称《EDA技术课程设计》课程代码学分1总学时/周数1周适用专业电子工程、通信工程、自动化等专业
一、课程设计目的与任务本课程设计是在学完EDA技术课程后的必修课程,它的教学目的和任务是综合利用所学EDA技术知识完成一个具有完整功能的电子系统设计,从系统顶层模块的划分、各功能模块的硬件语言描述(编程)、各模块及整体电路仿真、到最后下载到可编程器件实现真实的电路,让学生亲自体验一次采用现代电子设计自动化技术完成一个电子系统设计的全过程让学生得到一次自主使用VHDL语言描述电路功能的训练机会,从而提高对VHDL语言的使用能力,加深对仿真在设计中的重要作用的认识,提高对使用Max+plus2EDA软件工具的熟练程度,最终获得初步的电子系统设计经验,为毕业设计和将来从事电子设计的相关工作打下基础
二、课程设计基本要求本课程设计,采用以学生自主设计为主教师指导为辅的原则,让学生有一个充分发挥自我想像的空间,设计分阶段进行,在独立力完成了方案设计后,组织一次交流讨论会,互相启发开阔设计思路,尽可能使学生在这个具有创新思维、难度最高的设计环节获得更多的收,益通过该课程设计更深入更全面地提高使用Max+plus2软件工具完成设计全过程的熟练程度,尤其是要提高仿真和试验开发系统的使用能力,设计最终要做出真实电路并上电检测其功能和性能指标是否达到了预定的目标,最后写出课程设计报告
三、课程设计选题原则所选题目应是社会生活、生产中常见的、学生易于理解和把握且感兴趣的、对所学知识尽可能综合全面派上用场的、难易程度适中的、一周时间能够完成的的题目
四、课程设计内容及时间安排
1.设计内容根据具体设计题目和提出的功能性能指标要求,查阅相应参考资料,将所设计的电路系统划分成若干功能模块完成顶层结构设计(方案设计),对各功能模块用硬件描述语言描述以完成程序设计,对个功能模块及电路系统整体做仿真设计以验证其正误,将设计文件下载至可编程逻辑器件在实验开发装置上检测功能性能指标以完成真实电路的设计写出课程设计报告,其中要有顶层结构图,各功能模块的程序,各功能模块和整个电路系统的仿真波形图,并对这些设计图纸和设计程序所表达的逻辑思想、工作原理给以说明,写出设计步骤和设计心得
2.课程设计时间开始设计的前一周公布设计题目下达设计任务,用半周时间完成方案设计、程序设计,另外半周完成仿真、下载、测试
五、课程设计主要参考资料潘松黄继业编著《EDA技术使用教程》(第二版)科学出版社2005王振红主编《VHDL数字电路设计与应用实践教程》机械工业出版社,2006年
六、课程设计考核方式及成绩评定考核成绩由两部分组成现场检测设计出的真实电路占50%,课程设计报告占50%大纲撰写人杨显富系(教研室)(签字)学院学术委员会意见(签字)学院审核(签字、盖章)年月日注请在黄色显示的区域里用仿宋五号〃字体填写第三篇EDA课程设计考试序号28自动打铃系统设计说明书学生姓名周文江学号:专业班级1102报告提交日期:湖南理工学院物电学院目录
一、题目及要求简介
31.设计题目
32.总体要求简介3
二、设计方案说明3
三、系统采用器件以及模块说明
31.系统框图
42.选
四、各部分仿真结果择的FPGA芯片及配置
43.系统端口和模块说明5
五、调试及总结6
六、参考文献……7
七、附录7
一、题目及要求简介L设计题目设计一个多功能自动打铃系统
2、总体要求简介
①基本计时和显示功能(24小时制显示),包括
1.24小时制显示
2.动态扫描显示;
3.显示格式88-88-88
②能设置当前时间(含时、分)
③能实现基本打铃功能,规定:06:00起床铃,打铃5s
二、设计方案说明本次设计主要采用Verilog HDL硬件描述性语言、分模块法设计的自动打铃系统由于这次用的开发板提供的是50M晶振首先要对时钟进行分频,当计时到2FA_F07F时完成1s分频,通过计时到60s产生分钟进位信号,再通过60分钟产生时钟进位信号最后通过6个寄存器对时分秒进行锁存最终输出到8个数码管上完成显示当显示时钟和默认闹钟时钟相等时,驱动打铃模块通过key_mode,key_turn,key_change查看闹钟,时钟显示,调整时钟
三、系统采用器件以及模块说明
1.系统框图如下:下如图框统系
2.选择的FPGA芯片及配置本次系统设计采用的FPGA芯片是Alter公司生产的Cyclone IIEP2C8Q208C8该芯片是208个管脚,138个o10,并且具有两个内部PLL,而且内嵌乘法器,8K的逻辑门,资源相当丰富完成这次自动打铃系统的设计总共消耗250个LE单元,22个10口,131个寄存器经过综合后,本系统最高能实现145M的运行速度通过Quartus II软件观察到内部的RTL图如下
3.系统端口和模块说明Q分频部分分频器的作用是对50Mhz的系统时钟信号进行分频,得到频率为lhz的信号,即为1S的计时信号42按键部分按键key_mode-0为显示计时,1为闹钟显示,2为调整时间按键key_turn—0为调整小时,1为调整分钟按键key_change一按一次加13®计时部分通过sec_L sec_H,min_L,min_H,hour_L,hour_H6个寄存器对时分秒,进行锁存然后送入数码管显示54闹钟模块当设定的闹钟时间和数码管上显示的时间相等时驱动闹钟,完成打铃,持续时间5s65数码管显示模块。
个人认证
优秀文档
获得点赞 0