版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上课 程 设 计 课程名称 硬件描述语言与EDA技术 题目名称 硬件描述语言与EDA技术实践学生学院 材料与能源 专业班级 12微电子学(2)班 学 号 学生姓名 郑 培 柱 指导教师 陈 先 朝 2015年 6月 22日广东工业大学课程设计任务书题目名称硬件描述语言与EDA技术实践学生学院材料与能源学院专业班级12微电子学(2)班姓 名郑培柱学 号一、课程设计的内容与要求1. 系统功能分析,分模块层次化设计;2. 实现系统功能的方案设计;3. 编写各功能模块Verilog HDL语言程序;4. 对各功能模块进行编译、综合、仿真和验证;5. 顶层文件设计,可用Veril
2、og HDL语言设计,也可以用原理图设计;6. 整个系统进行编译、综合、仿真和验证;7. 在CPLD/FPGA实验开发系统试验箱上进行硬件验证;8. 按所布置的题目要求,每一位学生独立完成全过程。二、课程设计应完成的工作1. 所要求设计内容的全部工作;2. 按设计指导书要求提交一份报告书;3. 提交电子版的设计全部内容:工程目录文件夹中的全部内容,报告书三、课程设计进程安排序号设计各阶段内容地点起止日期1布置设计题目和要求;收集相关资料。工3317或宿舍6.222方案分析与确定;编写Verilog源程序。工3317或宿舍6.233编写Verilog源程序;编译、综合、仿真、定时分析、适配。工3
3、317或宿舍6.244下载和硬件验证;验收。工33176.255下载和硬件验证;验收;撰写报告工33176.26678四、应收集的资料及主要参考文献1. 陈先朝,硬件描述语言与EDA技术实践指导书,2015年5月2. 潘松等编著,EDA技术与Verilog HDL ,电子工业出版社,2013年;3. 现代数字电子技术及Verilog设计,清华大学出版社,2014年; 4. 王金明等编著,EDA技术与Verilog HDL设计,电子工业出版社,2013年;5. 刘靳等编著,Verilog程序设计与EDA ,西安电子科技大学出版社,2012年;6. 刘福奇主编,Verilog HDL 应用程序设计
4、实例精讲,电子工业出版社,2012年;7. 周润景等主编,基于Quartus 的数字系统Verilog HDL设计实例详解,电子工业出版社,2010年。发出任务书日期: 2015年6月 22日 指导教师签名:计划完成日期: 2015年6月 26日 基层教学单位责任人签章:主管院长签章:摘要 Verilog HDL是一种描述语言(HDL:Hardware Description Language),以来描述硬件的结构和行为的语言,用它可以表示逻辑电路图、,还可以表示数字逻辑系统所完成的逻辑功能。 Verilog HDL和VHDL是世界上最流行的两种硬件描述语言,都是在20世纪80年代中期开发出来
5、的。前者由Gateway Design Automation公司(该公司于1989年被公司购)开发。两种HDL均为IEEE标准。本课程设计以Verilog为基础设计一个多路彩灯控制器,能够在4种不同的彩灯花样之间进行循环变化,并可设置花型变化的节奏,且可进行复位。关键词:Verilog,彩灯,控制,FPGA一、 目的与任务 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 6二、 设计原理及方案 - - - - - - - - - - - - - - - - - - - - - - -
6、 - - - - - - - - - - - - - - - - - - - 6三、 设计分析 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -63.1 三频率输出模块3.2 三选一选择模块3.3 彩灯显示模块 3.4 顶层文件设计 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -11 四、管脚分配 - - - - - - - - - - - - - -
7、 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 14 五、心得体会- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 15 六、参考文献- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 15附录- - - - - - - - - - - - - - - - -
8、 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -16一、 目的与任务1. 熟悉掌握EDA工具软件Quartus2的使用2. 熟练用Verilog硬件描述语言描述数字电路3. 学会使用Verilog进行大规模集成电路设计4. 学会用CPLD/FPGA实践系统硬件验证电路设计的正确性5. 初步掌握EDA技术并具备一定的可编程逻辑芯片的开发能力二、 设计原理及方案原理:建立一个并行操作的流水灯模块,形成不同的彩灯花样,同时使用不同频率,实现不同频率的不同花样显示。方案:总电路由一个三分频输出分频器模块,三
9、选一选择模块,并行操作的流水灯模块。三频率输出分频器模块把输入频率分成三个不同的频率输出,四选一选择不同的频率输出给彩灯显示,从而达到控制彩灯闪烁速度的快慢。三、 设计分析3.1三频率输出模块 该模块是将高频时钟转换成低频时钟信号,CLK信号经分频器将50mHZ进行1分频、3分频和6分频提供给三选一选择器。按下复位键可使模块复位。 首先定义模块接口及变量如下: module fenpin(CLK,RSTn,CLK1, /1分频CLK2,/3分频CLK3 /6分频); input CLK; input RSTn; output CLK1,CLK2,CLK3; reg CLK2,CLK3;可见,分
10、别定义了三个输出时钟信号,分别是1分频,3分频和6分频。其中1分频比较简单: assign CLK1 = CLK;三分频代码如下:reg 3:0a;/*frequency dividing 3*/always (posedge CLK or negedge RSTn) if( !RSTn ) a = 1d0;else if (CLK&a=3d3)beginCLK2=1d1;a=1d0; endelse begin CLK2=1d0;a=a+1d1;end 定义了reg变量a,计算CLK脉冲,每一个CLK脉冲自加,达到3的时候输输出一个CLK2脉冲并清零a变量,重复上面过程。这样便形成CLK时钟
11、的三分频时钟CLK2。六分频代码如下:reg 4:0b;/*frequency dividing 6*/always (posedge CLK or negedge RSTn) if( !RSTn ) b = 1d0;else if (CLK&b=4d6) begin CLK3=1d1;b=1d0; end else begin CLK3=1d0; b=b+1d1; end类似三分频代码,只是reg变量计数CLK脉冲数到6才输出CLK3脉冲并清零。3.2 三选一选择模块 该模块是选择输入的三个频率中的一个频率给彩灯显示系统,f_choice1、f_choice2、f_choice3分别选择对应
12、CLK1、CLK2、CLK3输出频率按键,RESn 复位按键实现对模块的复位。首先定义三选一选择器的模块端口及变量,代码如下:module choice_3( f_choice1, f_choice2,f_choice3,RSTn, CLK1,CLK2,CLK3,CLK_OUT); input f_choice1,f_choice2,f_choice3; input RSTn,CLK1,CLK2,CLK3; output CLK_OUT; reg CLK_OUT;先定义一个reg变量c,根据按键操作赋值。敏感信号为按键信号和复位信号。reg 3:0 c;always (negedge f_ch
13、oice1 or negedge f_choice2 or negedge f_choice3 or negedge RSTn) if( !RSTn )c = 1d0; else if(!f_choice1)c=3d0;else if(!f_choice2)c=3d1;else if(!f_choice3)c=3d2; 最后根据reg变量c选择不同频率。/*/ always (*) case (c) 3d0:CLK_OUT=CLK1; 3d1:CLK_OUT=CLK2; 3d2:CLK_OUT=CLK3; default : CLK_OUT=CLK1;这样,就完成了三选一频率选择器。3.3 彩
14、灯显示模块 以上图为基础,设计并行操作的流水灯,每一功能模块在将定时间内,将输出拉高。示意图如下: 从上图我们可以看到,功能模块1在时间的第一个1/4拉高输出,功能模块2在第二个1/4拉高输出,其余的模块也是以此类推。所以在一个特定的时间段内,每一个功能模块所占的时间都是一样。本设计采用六个LED资源。led0_module.v先定义接口:module led0_module( CLK, RSTn, LED_Out); input CLK; input RSTn; output LED_Out; /*/ 然后定义总的时间长度,总共分成15个时间段: parameter T100MS = 25d
15、15_000_000; /*/ 利用Count1计算一个循环的时间: reg 25:0Count1; always ( posedge CLK or negedge RSTn ) if( !RSTn ) Count1 = 25d0; else if( Count1 = T100MS ) Count1 = 25d0; else Count1 = Count1 + 1b1; /*/在一个循环内的15个时间段中,让led0在特定时间段拉高输出:reg rLED_Out;always ( posedge CLK or negedge RSTn ) if( !RSTn ) rLED_Out = 25d0
16、 & Count1 25d1_000_000 ) rLED_Out = 25d10_000_000 & Count1 25d11_000_000 ) rLED_Out = 25d14_000_000 & Count1 25d15_000_000 ) rLED_Out = 1b1; else rLED_Out = 1b0; /*/ assign LED_Out = rLED_Out; /*/ endmodule类似的,led1_module.v、led2_module.v、led3_module.v、led4_module.v、led5_module.v内,让led1、led2、led3、led
17、4、led5分别在特定的时间段拉高输出,其他时间段拉低输出。最终形成了四个花样的流水灯。分别是1、从左到右依次点亮;2、从右到左依次点亮;3、从两边向中间依次点亮;4、从中间向两边依次点亮。即Count1 led0 led1 led2 led3 led4 led50-: 1 0 0 0 0 0- 0 1 0 0 0 0- 0 0 1 0 0 0- 0 0 0 1 0 0- 0 0 0 0 1 0 - 0 0 0 0 0 1- 0 0 0 0 1 0- 0 0 0 1 0 0- 0 0 1 0 0 0- 0 1 0 0 0 0- 1 0 0 0 0 1- 0 1 0 0 1 0- 0 0 1 1
18、 0 0- 0 1 0 0 1 0- 1 0 0 0 0 1下一个循环3.4 顶层文件设计通过元件例化,将分频模块fenpin_module、频率选择模块f_choice_module、led0_module、led1_module、led2_module、led3_module、led4_module和led5_module连结起来。形成一多路频率选择的彩灯循环控制器。首先定义总端口:module top_module( CLK, RSTn, LED_Out,f_choice1,f_choice2,f_choice3,); input CLK; input RSTn,f_choice1,f_
19、choice2,f_choice3; output 5:0LED_Out; /*/ 分频器模块连接: wire CLK1_Out,CLK2_Out,CLK3_Out; fenpin U7 ( .CLK( CLK ), .RSTn( RSTn ), .CLK1( CLK1_Out ), .CLK2( CLK2_Out ), .CLK3( CLK3_Out ) ); /*/ 数据选择器模块连结: choice_3 U8 ( .f_choice1(f_choice1), .f_choice2(f_choice2), .f_choice3(f_choice3), .RSTn( RSTn ), .CLK
20、1( CLK1_Out ), .CLK2( CLK2_Out ), .CLK3( CLK3_Out ), .CLK_OUT(CLKOut) ); 各个led模块连结: /*/ wire LED0_Out; led0_module U1 ( .CLK( CLKOut ), .RSTn( RSTn ), .LED_Out( LED0_Out ) ); /*/ wire LED1_Out; led1_module U2 ( .CLK( CLKOut ), .RSTn( RSTn ), .LED_Out( LED1_Out ) ); /*/ wire LED2_Out; led2_module U3
21、( .CLK( CLKOut ), .RSTn( RSTn ), .LED_Out( LED2_Out ) ); /*/ wire LED3_Out; led3_module U4 ( .CLK( CLKOut ), .RSTn( RSTn ), .LED_Out( LED3_Out ) ); /*/ wire LED4_Out; led4_module U5 ( .CLK( CLKOut ), .RSTn( RSTn ), .LED_Out( LED4_Out ) ); /*/ wire LED5_Out; led5_module U6 ( .CLK( CLKOut ), .RSTn( RS
22、Tn ), .LED_Out( LED5_Out ) ); /*/ assign LED_Out = LED5_Out,LED4_Out,LED3_Out, LED2_Out, LED1_Out, LED0_Out; /*/endmodule四、 管脚分配 本设计采用alera公司的EP2C5Q208芯片,在Category中,选择pin:在Edit下面的”To”和“location”中,分别为输入和输出端口指定芯片的引脚。第一次下载时,首先点击“Hardware Setup”,打开Hardware Setup对话框,然后点击Add Hardware,选择ByteBlaster II 后单击”
23、Select Hardware”,下载形式为ByteBlaster II 。下载方式分别有AS下载和JTAG下载。 结果证实调试成功。五 、心得体会经过2天的程序编写和FPGA系统的下载调试,我不仅巩固了书本的知识,也进一步熟悉了Verilog语言的使用和编写,还对Quartus II 软件的使用更加熟练,也了解了FPGA开发系统的使用。通过这次课程设计,我认识到掌握书本的知识是远远不够,还要通过实践来巩固和提高。通过实践 ,让我对verilog理解更加深入,也对FPGA 开发有了较深入的理解。为以后工作实践打下良好基础。六 、参考文献陈先朝,硬件描述语言与EDA技术实践指导书,2015年5月
24、潘松等编著,EDA技术与Verilog HDL ,电子工业出版社,2013年;现代数字电子技术及Verilog设计,清华大学出版社,2014年; 王金明等编著,EDA技术与Verilog HDL设计,电子工业出版社,2013年;刘靳等编著,Verilog程序设计与EDA ,西安电子科技大学出版社,2012年;刘福奇主编,Verilog HDL 应用程序设计实例精讲,电子工业出版社,2012年;周润景等主编,基于Quartus 的数字系统Verilog HDL设计实例详解,电子工业出版社,2010附录:fenpin.vmodule fenpin(CLK,RSTn,CLK1,CLK2,CLK3);
25、 input CLK; input RSTn; output CLK1,CLK2,CLK3; reg CLK2,CLK3;reg 3:0a;/*frequency dividing 3*/always (posedge CLK or negedge RSTn) if( !RSTn ) a = 1d0; else if (CLK&a=3d3) begin CLK2=1d1; a=1d0; end else begin CLK2=1d0; a=a+1d1; endreg 4:0b;/*frequency dividing 6*/always (posedge CLK or negedge RSTn
26、) if( !RSTn ) b = 1d0; else if (CLK&b=4d6) begin CLK3=1d1; b=1d0; end else begin CLK3=1d0; b=b+1d1; end/*/ assign CLK1 = CLK; /*/endmodule choice_3.v:module choice_3( f_choice1, f_choice2,f_choice3,RSTn, CLK1,CLK2,CLK3,CLK_OUT); input f_choice1,f_choice2,f_choice3; input RSTn,CLK1,CLK2,CLK3; output
27、CLK_OUT; reg CLK_OUT;reg 3:0 c;always (negedge f_choice1 or negedge f_choice2 or negedge f_choice3 or negedge RSTn) if( !RSTn ) c = 1d0; else if(!f_choice1) c=3d0; else if(!f_choice2) c=3d1; else if(!f_choice3) c=3d2; /*/ always (*) case (c) 3d0:CLK_OUT=CLK1; 3d1:CLK_OUT=CLK2; 3d2:CLK_OUT=CLK3; defa
28、ult : CLK_OUT=CLK1; endcase /*/endmoduleLed0_module:module led0_module( CLK, RSTn, LED_Out); input CLK; input RSTn; output LED_Out; /*/ parameter T100MS = 25d15_000_000; /*/ reg 25:0Count1; always ( posedge CLK or negedge RSTn ) if( !RSTn ) Count1 = 25d0; else if( Count1 = T100MS ) Count1 = 25d0; el
29、se Count1 = Count1 + 1b1; /*/reg rLED_Out;always ( posedge CLK or negedge RSTn ) if( !RSTn ) rLED_Out = 25d0 & Count1 25d1_000_000 ) rLED_Out = 25d10_000_000 & Count1 25d11_000_000 ) rLED_Out = 25d14_000_000 & Count1 25d15_000_000 ) rLED_Out = 1b1; else rLED_Out = 1b0; /*/ assign LED_Out = rLED_Out;
30、 /*/ EndmoduleLed1_module.vmodule led1_module( CLK, RSTn, LED_Out); input CLK; input RSTn; output LED_Out; /*/ parameter T100MS = 25d15_000_000; /*/ reg 25:0Count1; always ( posedge CLK or negedge RSTn ) if( !RSTn ) Count1 = 25d0; else if( Count1 = T100MS ) Count1 = 25d0; else Count1 = Count1 + 1b1;
31、 /*/reg rLED_Out;always ( posedge CLK or negedge RSTn ) if( !RSTn ) rLED_Out = 25d1_000_000 & Count1 25d2_000_000 ) rLED_Out = 25d9_000_000 & Count1 25d10_000_000 ) rLED_Out = 25d11_000_000 & Count1 25d12_000_000 ) rLED_Out = 25d13_000_000 & Count1 25d14_000_000 ) rLED_Out = 1b1; else rLED_Out = 1b0
32、; /*/ assign LED_Out = rLED_Out; /*/ endmoduleled2_module.v:module led2_module( CLK, RSTn, LED_Out); input CLK; input RSTn; output LED_Out; /*/ parameter T100MS = 25d15_000_000; /*/ reg 25:0Count1; always ( posedge CLK or negedge RSTn ) if( !RSTn ) Count1 = 25d0; else if( Count1 = T100MS ) Count1 =
33、25d0; else Count1 = Count1 + 1b1; /*/reg rLED_Out;always ( posedge CLK or negedge RSTn ) if( !RSTn ) rLED_Out = 25d2_000_000 & Count1 25d3_000_000 ) rLED_Out = 25d8_000_000 & Count1 25d9_000_000 ) rLED_Out = 25d12_000_000 & Count1 25d13_000_000 ) rLED_Out = 1b1; else rLED_Out = 1b0; /*/ assign LED_O
34、ut = rLED_Out; /*/ endmoduleled3_module.v:module led3_module( CLK, RSTn, LED_Out); input CLK; input RSTn; output LED_Out; /*/ parameter T100MS = 25d15_000_000; /*/ reg 25:0Count1; always ( posedge CLK or negedge RSTn ) if( !RSTn ) Count1 = 25d0; else if( Count1 = T100MS ) Count1 = 25d0; else Count1
35、= Count1 + 1b1; /*/reg rLED_Out;always ( posedge CLK or negedge RSTn ) if( !RSTn ) rLED_Out = 25d3_000_000 & Count1 25d4_000_000 ) rLED_Out = 25d7_000_000 & Count1 25d8_000_000 ) rLED_Out = 25d12_000_000 & Count1 25d13_000_000 ) rLED_Out = 1b1; else rLED_Out = 1b0; /*/ assign LED_Out = rLED_Out; /*/
36、 Led4_module.v:endmodule module led4_module( CLK, RSTn, LED_Out); input CLK; input RSTn; output LED_Out; /*/ parameter T100MS = 25d15_000_000; /*/ reg 25:0Count1; always ( posedge CLK or negedge RSTn ) if( !RSTn ) Count1 = 25d0; else if( Count1 = T100MS ) Count1 = 25d0; else Count1 = Count1 + 1b1; /*/reg rLED_Out;alway
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 关于调整供应链管理流程通知函3篇
- 2025年滏盛职业学院高职单招职业技能考试模拟试卷附完整答案详解(各地真题)
- 2025年怀化幼儿师范高专高职单招职业技能考试题库及答案详解(考点梳理)
- 2027年陕西千阳职业学院高职单招职业技能考试模拟试卷及完整答案详解(各地真题)
- 2025年永州潇湘职业学院单招职业技能考试题库附答案详解【轻巧夺冠】
- 2025年辽宁现代服务职业学院高职单招职业技能考试题库及答案详解【真题汇编】
- 2024年沣远职业学院高职单招职业适应性测试考试模拟试卷带答案详解(培优B卷)
- 奶粉生产配方研发与验证手册
- 上转换纳米粒子-光敏剂复合体的光动力治疗结题报告
- 企业社群裂变中利益激励对传播深度的研究报告
- 《四川省老旧小区物业服务标准》
- 2025年人民法院聘用书记员考试试题答案
- 2025年中级(四级)化学检验员(化工分析)职业技能理论知识试题考试试题(含答案)
- 临床镇痛药物的应用与管理
- 铸造工安全培训课件
- 2025云南省行政执法资格考试考前模拟题(含答案)
- 【鄂尔多斯】2024年内蒙古鄂尔多斯职业学院人才引进39人笔试附带答案详解
- 2024衡阳蒸湘区中小学教师招聘考试试题及答案
- 《齐齐哈尔烤肉制作工艺与服务规范》
- DB52T 1161-2016 贵州省旅游购物场所等级划分与评定
- 2024年广东省深圳市南山区中考英语三模试卷
评论
0/150
提交评论