课程设计课程名称硬件描述语言与EDA技术题目名称硬件描述语言与EDA技术实践学生学院材料与能源专业班级 11微电子学(1)班学号学生姓名指导教师2014年6月27日广东工业大学课程设计任务书题目名称硬件描述语言与EDA技术实践学生学院材料与能源学院专业班级11微电子学(1)班姓名学号一、课程设计的内容与要求1.系统功能分析,分模块层次化设计;2.实现系统功能的方案设计;3.编写各功能模块VHDL语言程序;4.对各功能模块进行编译、综合、仿真和验证;5.顶层文件设计,可用VHDL语言设计,也可以用原理图设计;6.整个系统进行编译、综合、仿真和验证;7.在CPLD/FPGA实验开发系统试验箱上进行硬件验证;8.按所布置的题目要求,每一位学生独立完成全过程。
二、课程设计应完成的工作1.所要求设计内容的全部工作;2.按设计指导书要求提交一份报告书;3.提交电子版的设计全部内容:工程目录文件夹中的全部内容,报告书三、课程设计进程安排四、应收集的资料及主要参考文献1.陈先朝,硬件描述语言与EDA技术实践指导书,2014年3月2.曹昕燕等编著,EDA技术实验与课程设计,清华大学出版社,2006年5月3.刘欲晓等编著,EDA技术与VHDL电路开发应用实践,电子工业出版社,2009年4月4.刘昌华等编著,数字逻辑EDA设计与实践:MAX+plusⅡ与QuartusⅡ双剑合璧,国防工业出版社,2009年5.刘江海主编,EDA技术课程设计,华中科技大学出版社,2009年1月发出任务书日期: 2014年6月 23日指导教师签名:计划完成日期: 2014年6月 27日基层教学单位责任人签章:主管院长签章:七人表决器1.设计目的(1)学习和掌握Quartus II软件的基本操作;(2)通过设计七人表决器,掌握基于可编程器件的VHDL硬件描述语言的设计方法;(3)学习用CPLD/FPGA 实践系统硬件验证电路设计的正确性2.设计题目及要求(1)题目:表决器(2)要求:设计一个七人表决器,当赞成人数大于等于四时显示表决通过,同时分别将投票中赞成的人数和反对的人数在数码管上显示出来。
3.设计方案:表决器的功能是将所投票者的结果综合起来,超过半数赞成则表示结果通过,反之则不通过。
而七人表决器由七个人来投票,当赞成的票数大于或者等于4人,则认为通过;当反对的票数大于或者等于4人时,则认为不通过。
所以这次设计中我将用7个数据开关来表示七个人,当对应的拨挡开关输入为‘1’时,表示此人同意;否则若拨挡开关输入为‘0’时,则表示此人反对。
表决的结果用一个LED表示,若表决的结果为同意,则LED被点亮,;否则,如果表决的结果为反对,则LED不会被点亮。
同时用七段显示数码管来显示赞成的人数和反对的人数。
4.实验箱使用说明本次使用的实验箱为KHF-3型CPLD/FPGA实践开发系统所用芯片:ACEX1K系列的EP1K30QC208-3,引脚为208个,5980逻辑单元。
数据开关SW1至SW7分别代表7人。
当数据开关按下时输出为高电平‘1’,代表该投票者赞成,反之输出为低电平‘0’,代表该投票者反对。
数码管SEG1为赞成者人数,数码管SEG4为反对者人数LED灯SEG5对应的P190为结果通过指示灯,当灯点亮,则代表投票结果为通过,反之熄灭时代表投票结果不通过。
5.设计流程图开始6.VHDL程序设计LIBRARY IEEE; --库的说明USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY bjq IS --定义实体bjq PORT --端口说明( clk:IN STD_LOGIC; --时钟输入端口vote:IN STD_LOGIC_VECTOR(6 DOWNTO 0); --七人投票端LED_pass:OUT STD_LOGIC; --结果LED灯LED_approve,LED_object:OUT STD_LOGIC_VECTOR(6 DOWNTO 0));--赞成人数及反对人数显示数码管END ENTITY bjq;ARCHITECTURE bhv OF bjq IS --结构体说明SIGNAL q:STD_LOGIC; --内部信号说明SIGNAL q1,q2:STD_LOGIC_VECTOR(6 DOWNTO 0);BEGINPROCESS(vote)V ARIABLE A:INTEGER; --定义变量A用于统计赞成人数BEGINA:=0;IF clk'EVENT AND clk='1' THENIF vote(0)='1' THEN A:=A+1;END IF;IF vote(1)='1' THEN A:=A+1;END IF;IF vote(2)='1' THEN A:=A+1;END IF;IF vote(3)='1' THEN A:=A+1;END IF;IF vote(4)='1' THEN A:=A+1;END IF;IF vote(5)='1' THEN A:=A+1;END IF;IF vote(6)='1' THEN A:=A+1;END IF;CASE A IS --通过CASE语句选择不同赞成人数下LED数码管的显示内容WHEN 0 => q<='0';q1<="1111110";q2<="1110000";WHEN 1 => q<='0';q1<="0110000";q2<="1011111";WHEN 2 => q<='0';q1<="1101101";q2<="1011011";WHEN 3 => q<='0';q1<="1111001";q2<="0110011";WHEN 4 => q<='1';q1<="0110011";q2<="1111001";WHEN 5 => q<='1';q1<="1011011";q2<="1101101";WHEN 6 => q<='1';q1<="1011111";q2<="0110000";WHEN 7 => q<='1';q1<="1110000";q2<="1111110";WHEN OTHERS => q<='Z';q1<="ZZZZZZZ";q2<="ZZZZZZZ";END CASE;LED_pass<=q; --将结果送到LED灯及数码管LED_approve<=q1;LED_object<=q2;END IF;END PROCESS;END ARCHITECTURE bhv;7.仿真端口设置完毕后如下图所示:仿真的最终结果:8.仿真波形分析(1)当输入vote为1100101时,表示有4人投于赞成票,LED_approve显示为0110011,即数码管显示为‘4’,LED_object显示为1111001,即数码管显示为‘3’,LED_pass为高电平即点亮;(2)当输入vote为1100000时,表示有2人投于赞成票,LED_approve显示为1101101,即数码管显示为‘2’,LED_object显示为1011011,即数码管显示为‘5’,LED_pass为低电平即熄灭;(3)当输入vote为1100001时,表示有3人投于赞成票,LED_approve显示为1111001,即数码管显示为‘3’,LED_object显示为0110011,即数码管显示为‘4’,LED_pass为低电平即熄灭;(4)当输入vote为1100010时,表示有3人投于赞成票,LED_approve显示为1111001,即数码管显示为‘3’,LED_object显示为0110011,即数码管显示为‘4’,LED_pass为低电平即熄灭;如此说明,仿真结果符合实际要求需要。
9.管脚分配10.设计所遇到的问题这次设计中所遇到的最大困难在于仿真。
由于对仿真的功能不够熟悉,一开始对于输入波形的设置就乱了阵脚。
最初时钟信号的输入设置并没有很大问题,但是我并没有考虑到仿真时的end time 。
由于end time 设置比较小,使得仿真结果并不完善。
后来请教了同学后才发现了这问题。
由于输入为多通道输入,每一个vote 信号我都使用了一个random波形,使得输入十分的紊乱,输出结果更是一塌糊涂。
后来将vote变成二进制类型输入,并且随机设置了初始值,解决了这个问题。
11.设计的收获和体会通过这次EDA的课程设计使我对于Quartus II的了解更加深入。
不仅学到了如何通过VHDL硬件描述语音来实现可编程器件的运用,还学到了如何利用Quartus II的强大的仿真功能验证器件功能的正确性。
但更多的是能够自己动手,这样的实践会比光看书更为有用。
在实践中我们可以发现一般书上可能不会出现的问题,这样问题出现了我们便可以通过自己发掘的途径解决问题,加深我们对这问题的认识,所谓实践出真知。
12.参考文献(1)陈先朝,硬件描述语言与EDA技术实践指导书,2014年3月(2)曹昕燕等编著,EDA技术实验与课程设计,清华大学出版社,2006年5月(3)刘欲晓等编著,EDA技术与VHDL电路开发应用实践,电子工业出版社,2009年4月(4)刘昌华等编著,数字逻辑EDA设计与实践:MAX+plusⅡ与QuartusⅡ双剑合璧,国防工业出版社,2009年(5)刘江海主编,EDA技术课程设计,华中科技大学出版社,2009年1月。