青岛农业大学电子设计自动化及专用集成电路课程设计报告

上传人:1666****666 文档编号:39679776 上传时间:2021-11-11 格式:DOC 页数:19 大小:229.15KB
收藏 版权申诉 举报 下载
青岛农业大学电子设计自动化及专用集成电路课程设计报告_第1页
第1页 / 共19页
青岛农业大学电子设计自动化及专用集成电路课程设计报告_第2页
第2页 / 共19页
青岛农业大学电子设计自动化及专用集成电路课程设计报告_第3页
第3页 / 共19页
资源描述:

《青岛农业大学电子设计自动化及专用集成电路课程设计报告》由会员分享,可在线阅读,更多相关《青岛农业大学电子设计自动化及专用集成电路课程设计报告(19页珍藏版)》请在装配图网上搜索。

1、青 岛 农 业 大 学理学与信息科学学院电子设计自动化及专用集成电路课程设计报告 设 计 题 目 一、设计一个二人抢答器 二、密码锁 学生专业班级 学生姓名(学号) 指 导 教 师 完 成 时 间 实 习(设计)地点 信息楼121 年 11 月 1 日一、课程设计目的和任务 课程设计目的:本次课程设计是在学生学习完数字电路、模拟电路、电子设计自动化的相关课程之后进行的。通过对数字集成电路或模拟集成电路的模拟与仿真等,熟练使用相关软件设计具有较强功能的电路,提高实际动手,为将来设计大规模集成电路打下基础。课程设计任务:一、设计一个二人抢答器。要求:(1) 两人抢答,先抢有效,用发光二极管显示是否

2、抢到答题权。(2) 每人两位计分显示,打错不加分,答对可加10、20、30分。(3) 每题结束后,裁判按复位,重新抢答。(4) 累积加分,裁判可随时清除。二、密码锁设计四位十进制密码锁,输入密码正确,绿灯亮,开锁;不正确,红灯亮,不能开锁。密码可由用户自行设置。二、分析与设计1、设计任务分析(1)二人抢答器用Verilog硬件描述语言设计抢答器,实现:1、二人通过按键抢答,最先按下按键的人抢答成功,此后其他人抢答无效。2、每次只有一人可获得抢答资格,一次抢答完后主持人通过复位按键复位,选手再从新抢答。3、有从新开始游戏按键,游戏从新开始时每位选手初始分为零分,答对可选择加10分、20分,30分

3、,最高九十分。4、选手抢答成功时其对应的分数显示。(2)密码锁1、第一个数字控制键用来进行密码的输入2、第二个按键控制数字位数的移动及调用密码判断程序。当确认后如果显示数据与预置密码相同,则LED 亮;如不相等,则无反应。按下复位键,计数等均复位2、设计方案论证详细设计(1)抢答器的主要利用D触发器的反馈,当检测到第一个上升沿时将按键(未按下时接低电平)接入的与门锁住,以保证与门只有一个上升沿输出,从而实现“最先按下按键的人抢答成功,此后其他人抢答无效”。在与门输出上升沿的同时检测按键,以确定是哪位选手抢答,用寄存器存下抢答选手的信息,最后确定哪个led灯亮以及那位选手对应的分数闪烁。将各模块

4、代码写好并测试后,在主模块中调用并分配引脚,引脚分配好后,从新编译、下载就可实验了。分别验证上述的各种功能,看是否达到预期的效果。(2)根据密码输入信号控制I/0 口的输出,第一个按键控制数字的递加,第二个按键控制数字位数的移动及调用密码判断程序。当确认后如果显示数据与预置密码相同,则LED 亮;如不相等,则无反应。按下复位键,计数等均复位。系统流程如下:3、详细设计(1)二人抢答器。顶层模块部分在在quartusII下的仿真原理图如下所示:抢答部分的仿真图:加分模块部分(对应snatch模块)在quartusII下的仿真原理图如下所示:数码管显示模块部分(对应snatch模块)在quartu

5、sII下的仿真原理图如下所示:(2)密码锁密码锁模块部分(对应snatch模块)在quartusII下的仿真原理图如下所示:4、源代码分析(1)二人抢答器代码module top(reset,key,score,clr,led,opin);/顶层模块部分input reset;/开始抢答按钮input1:0 key;/双人抢答按键input2:0 score;/加分按钮input clr;/清零按钮output1:0 led;/显示灯output31:0 opin;/数码管引脚控制wire1:0 m;wire7:0 q;snatch snatch(reset,key,led,m);/调用抢答模

6、块store store(score,clr,m,q);/调用加分模块deled deled(q,opin);/调用显示模块endmodulemodule snatch(reset,key,led,m);/抢答模块部分input reset;input1:0 key;output1:0 led;output1:0 m;reg q;reg1:0 s;wire out=key0|key1;wire clk=(!q)&out;assign m=s;always(posedge clk or posedge reset)/判断是否清零if(reset)beginq<=1'b0;e

7、ndelse q<=1'b1;always(posedge clk)/当开始抢答时,判断是否有人抢答,并将抢答的选手记录下来case(key)2'b01:s<=2'b01;2'b10:s<=2'b10;default:s<=2'b?;endcaseassign led=s;/对应选手的灯亮endmodulemodule store(score,clr,s,q);/加分模块input clr;input2:0 score;input1:0 s;output7:0 q;reg7:0 q;wire clk=score0|scor

8、e1|score2;/判断是否进行加分always(posedge clr or posedge clk)/判断是清零还是加分beginif(clr) q<=8'h00;elsebegincase(s)/判断那位选手加分2'b01:begin if(q3:0<4'h9)begin if(score=3'b001)q3:0<=q3:0+4'b0001;/选手一加10分else if(score=3'b010)q3:0<=q3:0+4'b0010; /选手一加20分else q3:0<=q3:0+4'b0

9、011; /选手一加30分end end2'b10:begin if(q7:4<4'h9)begin if(score=2'b001)q7:4<=q7:4+4'b0001; /选手二加10分else if(score=2'b010)q7:4<=q7:4+4'b0010; /选手二加20分else q7:4<=q7:4+4'b0011; /选手二加30分end endendcaseendendendmodulemodule deled(pin,opin);/数码管显示模块input7:0 pin;output31:0

10、 opin;reg31:0 opin;always(pin0 or pin1 or pin2 or pin3 or pin4 or pin5 or pin6 or pin7)/判断是否有加分显示部分begincase(pin3:0)/判断一号选手的分数4'b0000:opin15:0<=16'h3f3f;/显示零分4'b0001:opin15:0<=16'h063f; /显示十分4'b0010:opin15:0<=16'h5b3f; /显示二十分4'b0011:opin15:0<=16'h4f3f; /显示

11、三十分4'b0100:opin15:0<=16'h663f; /显示四十分4'b0101:opin15:0<=16'h6d3f; /显示五十分4'b0110:opin15:0<=16'h7d3f; /显示六十分4'b0111:opin15:0<=16'h073f; /显示七十分4'b1000:opin15:0<=16'h7f3f; /显示八十分4'b1001:opin15:0<=16'h6f3f; /显示九十分endcasecase(pin7:4)/判断二号选手的

12、分数4'b0000:opin31:16<=16'h3f3f; 4'b0001:opin31:16<=16'h063f;4'b0010:opin31:16<=16'h5b3f;4'b0011:opin31:16<=16'h4f3f;4'b0100:opin31:16<=16'h663f;4'b0101:opin31:16<=16'h6d3f;4'b0110:opin31:16<=16'h7d3f;4'b0111:opin31:16<

13、;=16'h073f;4'b1000:opin31:16<=16'h7f3f;4'b1001:opin31:16<=16'h6f3f;endcaseendendmodule(2)密码锁module KeyPress(sysclk,reset,keyin,data_out,LED,YN);input sysclk; /系统时钟reg clk; /分频1reg clk2; /分频2input reset; /复位input 2:0 keyin; /三位输入output 7:0 data_out; /八位数码管输入reg 7:0 data_out;

14、output YN; /判断密码正确与否的Led灯reg YN;reg 2:0 keyAA 2:0 ; /输入缓冲,防抖reg 25:0 count; /分频1计数?reg 25:0 count2; /分频2计数reg 3:0 count3; /分频2计数2reg 7:0 countA; /数码管显示延迟计数reg 3:0 key; /输入计数器reg 3:0 num; /数字计算reg 3:0 numSAT3:0; /数字输出reg 3:0 movX; /Led灯选择计数和判断密码reg 3:0 LEDtem; /led灯选择缓冲output 3:0 LED; /led灯选择reg 3:0

15、LED; reg enterX; /未定义(本来用作可以自定密码的)/分频1always(posedge sysclk or negedge reset) if (!reset) begin count <= 26'B0; end else if (count=120000)begincount<= 26'B0;clk <= clk;end elsebegin count<=count+26'B1;end/分频2always(posedge sysclk or negedge reset) if (!reset) begin count2 <

16、;= 26'B0; count3 <= 4'B0000; end else if (count2=1200000) begin count2 <= 26'B0; count3 <= count3+ 4'B0001;if (count3=4'B0011)beginclk2<= clk2;count3 <= 4'B0000;end endelsebegin count2<=count2+26'B1;end/输入always(posedge clk or negedge reset) if (!reset)b

17、eginkeyAA0 <=3'B111;keyAA1 <=3'B111;keyAA2 <=3'B111;endelsebeginkeyAA0 <= keyin;keyAA1 <= keyAA0;end/判断按键并且比较,赋值,主程序always(posedge clk2 or negedge reset)beginif (!reset)beginmovX<= 4'B0000;enterX<= 1'B0;numSAT0 = 4'B0;numSAT0 = 4'B0;numSAT0 = 4'B0

18、;numSAT0 = 4'B0;YN <= 1'B1;endelse if (keyin=keyAA1)beginif(keyin=3'B110)key=4'B0001;else if (keyin=3'B101)key=4'B0010;else if (keyin=3'B011)key=4'B0011;/按键1,数值递增,赋值if (key=4'B0001)begin #20; num <= num+4'B1;if(movX=4'B0000)numSAT0 = num;else if (mov

19、X=4'B0001)numSAT1 = num;else if (movX=4'B0010)numSAT2 = num;else if (movX=4'B0011)numSAT3 = num; if (num=4'B1010)num <= 4'B0;key =4'B0011;end/按键2,移位if (key=4'B0010)begin #30 movX <=movX+4'B0001; if(movX=4'B0100) begin if(numSAT0=1) if(numSAT1=2) if(numSAT2=3

20、) if(numSAT3=4)YN <=1'B0;elseYN <=1'B1;elseYN <=1'B1;elseYN <=1'B1;elseYN <=1'B1;end if (movX=4'B0101)movX <= 4'B0;key=4'B0011;end/按键3,未定义if(key=4'B0011)beginenterX <=1'B0;endendend/根据数字,输出到数码管always(posedge clk or negedge reset)beginif (!

21、reset)begindata_out = 8'B0011_1111;endelsebegincountA<= countA+8'B1;if(countA=8'B0000_0010)beginLED =4'B1110;/高电平有效case(numSAT0)4'B0000: data_out=8'B0011_1111;/04'B0001: data_out=8'B0000_0110;/14'B0010: data_out=8'B0101_1011;/24'B0011: data_out=8'B0

22、100_1111;/34'B0100: data_out=8'B0110_0110;/44'B0101: data_out=8'B0110_1101;/54'B0110: data_out=8'B0111_1101;/64'B0111: data_out=8'B0000_0111;/74'B1000: data_out=8'B0111_1111;/84'B1001: data_out=8'B0110_1111;/9default: data_out=8'B0011_1111;/0endcas

23、eendelse if (countA=8'B0000_0100)beginLED =4'B1101;case(numSAT1)4'B0000: data_out=8'B0011_1111;/04'B0001: data_out=8'B0000_0110;/14'B0010: data_out=8'B0101_1011;/24'B0011: data_out=8'B0100_1111;/34'B0100: data_out=8'B0110_0110;/44'B0101: data_out=8

24、'B0110_1101;/54'B0110: data_out=8'B0111_1101;/64'B0111: data_out=8'B0000_0111;/74'B1000: data_out=8'B0111_1111;/84'B1001: data_out=8'B0110_1111;/9default: data_out=8'B0011_1111;/0endcaseendelse if (countA=8'B0000_0110)beginLED =4'B1011;case(numSAT2)4&#

25、39;B0000: data_out=8'B0011_1111;/04'B0001: data_out=8'B0000_0110;/14'B0010: data_out=8'B0101_1011;/24'B0011: data_out=8'B0100_1111;/34'B0100: data_out=8'B0110_0110;/44'B0101: data_out=8'B0110_1101;/54'B0110: data_out=8'B0111_1101;/64'B0111: dat

26、a_out=8'B0000_0111;/74'B1000: data_out=8'B0111_1111;/84'B1001: data_out=8'B0110_1111;/9default: data_out=8'B0011_1111;/0endcaseendelse if (countA=8'B0000_1000)beginLED =4'B0111;case(numSAT3)4'B0000: data_out=8'B0011_1111;/04'B0001: data_out=8'B0000_011

27、0;/14'B0010: data_out=8'B0101_1011;/24'B0011: data_out=8'B0100_1111;/34'B0100: data_out=8'B0110_0110;/44'B0101: data_out=8'B0110_1101;/54'B0110: data_out=8'B0111_1101;/64'B0111: data_out=8'B0000_0111;/74'B1000: data_out=8'B0111_1111;/84'B10

28、01: data_out=8'B0110_1111;/9default: data_out=8'B0011_1111;/0endcasecountA <=8'B0;endendendendmodule三、系统实施仿真图如下:当裁判按下允许抢答按钮,之后选手一按下抢答按钮,之后选手一的灯亮,之后将内存器的q置1,选手二再按下按钮时已经失效,根据答题部分裁判加10分,如果裁判按下清零键之后选手分手显示零分,重新开始。四、总结与体会 经过这次课程设计我收获了很多,虽然在这次课程设计过程中我们遇到很多的麻烦,但是我们还是逐一解决了。各个模块调试没有没有错误,但放在一块调试

29、的时候就出现了错误,还有就是定义变量的时候对后续应用时变量赋值有事出现问题。之后运行没有错误之后仿真却又出现错误,当时特别失望,没有办法只好再一个一个模块的找问题,最终在引脚定义方面发现错误,经过改进成功完成了本次实验。通过本次课程设计我用到了有关数字电路、模拟电路、电子设计自动化的相关课程的知识。也对这些知识进一步的巩固。通过对数字集成电路或模拟集成电路的模拟与仿真,我熟练使用相关软件设计具有较强功能的电路,提高实际动手,为将来设计大规模集成电路打下基础。更锻炼了自己的动手能力。总之,EDA对于我们通信工程专业的学生来说非常重要,此次实习让我们将课本知识进行实际应用,对我们的能力提高有很大的帮助。 感谢老师孜孜不倦的教诲。相信在EDA学习过程中自己思维能力、学习能力、思考方式的提高,定会在以后的学习过程中给我带来很大的帮助。五、参考书目美 Samir Palnitkar Verilog HDL数字设计与综合(第二版) 电子工业出版社2012年4月课程设计成绩评定表学生姓名专业班级设计题目一、 设计一个二人抢答器二、 设计一个四位密码锁指导教师评语及意见:指导教师评阅成绩: 指导教师签字: 年 月 日注:此表装订在课程设计之后。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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