CPLD课程设计.docx

上传人:b****6 文档编号:4374888 上传时间:2022-12-01 格式:DOCX 页数:19 大小:264.87KB
下载 相关 举报
CPLD课程设计.docx_第1页
第1页 / 共19页
CPLD课程设计.docx_第2页
第2页 / 共19页
CPLD课程设计.docx_第3页
第3页 / 共19页
CPLD课程设计.docx_第4页
第4页 / 共19页
CPLD课程设计.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

CPLD课程设计.docx

《CPLD课程设计.docx》由会员分享,可在线阅读,更多相关《CPLD课程设计.docx(19页珍藏版)》请在冰豆网上搜索。

CPLD课程设计.docx

CPLD课程设计

 

太原理工大学

 

CPLD/FPGA应用设计课程设计

 

设计名称八路抢答器

专业班级电子信息工程

学号

姓名

指导教师张博

……………………………………装………………………………………订…………………………………………线………………………………………

专业班级电子信息工程0903学号3姓名成绩

专业班级

信息09-3

学生姓名

课程名称

CPLD/FPGA应用设计

设计名称

八路抢答器

设计周数

1.5周

指导教师

张博

设计

任务

主要

设计

参数

1、设计具有一个可容纳8组参赛者的数字智力抢答器,每组设置一个抢答按钮供抢答者使用。

2、电路具有第一信号的鉴别和锁存功能。

3、设置记分电路。

4、设置犯规电路。

设计内容

设计要求

1、系统的输入信号有:

A,B,C,D,E,F,G,H,系统清零信号CLR,系统时钟信号CLK,复位信号RST,加分按钮信号ADD,计时预置控制信号LDN,计时使能信号EN,计时预置数据调整按钮TA,TB;

2、系统的输出信号有:

指示灯控制信号出口LEDA、LEDB、LEDC、LEDD、LEDE、LEDF、LEDG、LEDH。

主要参考

资料

[1]《电子技术课程设计指导》彭介华高等教育出版社.2000年出版

[2]EDA技术及应用教程梁勇、李会萍等机械工业出版社

[3]《CPLD数字电路设MAX+plusⅡ》廖裕评等清华大学出版社,2001

学生提交

归档文件

课程设计说明书1份

 

指导教师签名:

日期:

…………………………………装……………………………………订………………………………………线……………………………………………

一、设计目的

1、加深对VHDL语言设计的理解;

2、通过对抢答器的设计加深对CPLD/FPGA课程的理解;

3、通过对抢答器的设计了解简易集成电路的设计思路;

二、设计要求

1、设计具有一个可容纳8组参赛者的数字智力抢答器,每组设置一个抢答按钮供抢答者使用。

2、电路具有第一信号的鉴别和锁存功能。

3、设置记分电路。

4、设置犯规电路。

三、设计方案

根据系统设计要求可知,系统的输入信号有:

各组的抢答按钮A、B、C、D、E、F、G、H,系统清零信号CLR,系统时钟信号CLK,计分复位信号RET,加分按钮信号ADD,计时预置控制信号LDN,计时使能信号EN,计时预置调整信号按钮AN、BN,系统的输出信号有:

4个组抢答成功与否的指示灯控制信号输出口LEDA、LEDB、LEDC、LEDD、LEDE、LEDF、LEDG、LEDH,4个组抢答时的计时数码管显示控制信号若干,抢答成功组别显示的控制信号若干,各组计分动态显示的控制信号若干。

本次课程设计的主要目的旨在通过独立完成一个“抢答器”的设计,达到对EDA技术的熟练掌握,提升对《CPLD/FPGA技术及应用》课程所学内容的掌握和应用。

以计算机为工具,设计者在EDA软件平台上,用硬件描述语言VHDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。

基于VHDL程序设计中拥有输入设计流程,其包括设计输入,综合,适配,仿真测试和编程下载等方法。

与其他应用软件相比,他提供了更强大、更直观便捷和操作灵活的原理图输入设计功能,同时还配备了更丰富的适用于各种需要的元件库,其中包括基本的逻辑元件,宏功能元件,以及类似于IP核的参数可设置的宏功能块LPM库。

设计者不必具备许多诸如编程技术,硬件描述语言等知识就能迅速入门,完成较大规模的电路设计系统。

能进行任意层次的数字系统设计,传统的数字电路实验只能完成单一层次的设计。

能对系统中的任意层次,或任一元件的功能进行精确的时序仿真。

通过时序仿真能迅速定位电路系统中的错误所在,并及时纠正。

抢答器的组成框图

四、VHDL参考程序

(一)抢答鉴别模块

1.VHDL源程序

----------------------------------------------------------------------------------

--Company:

--Engineer:

--CreateDate:

16:

56:

0306/24/2012

--DesignName:

--ModuleName:

qdjb-Behavioral

--ProjectName:

--TargetDevices:

--Toolversions:

--Description:

--Dependencies:

--Revision:

--Revision0.01-FileCreated

--AdditionalComments:

----------------------------------------------------------------------------------

libraryIEEE;

useIEEE.STD_LOGIC_1164.ALL;

useIEEE.STD_LOGIC_ARITH.ALL;

useIEEE.STD_LOGIC_UNSIGNED.ALL;

----Uncommentthefollowinglibrarydeclarationifinstantiating

----anyXilinxprimitivesinthiscode.

--libraryUNISIM;

--useUNISIM.VComponents.all;

entityqdjbis

port(clr,a,b,c,d,e,f,g,h:

instd_logic;

a1,b1,c1,d1,e1,f1,g1,h1:

outstd_logic;

states:

outstd_logic_vector(3downto0)

);

endqdjb;

architectureBehavioralofqdjbis

constantw1:

std_logic_vector(3downto0):

="0001";

constantw2:

std_logic_vector(3downto0):

="0010";

constantw3:

std_logic_vector(3downto0):

="0011";

constantw4:

std_logic_vector(3downto0):

="0100";

constantw5:

std_logic_vector(3downto0):

="0101";

constantw6:

std_logic_vector(3downto0):

="0110";

constantw7:

std_logic_vector(3downto0):

="0111";

constantw8:

std_logic_vector(3downto0):

="1000";

begin

process(clr,a,b,c,d,e,f,g,h)

begin

ifclr='0'then

states<="0000";

a1<='0';b1<='0';c1<='0';d1<='0';e1<='0';f1<='0';g1<='0';h1<='0';

elsif(a='1'andb='0'andc='0'andd='0'ande='0'andf='0'andg='0'andh='0')then

a1<='1';b1<='0';c1<='0';d1<='0';e1<='0';f1<='0';g1<='0';h1<='0';states<=w1;

elsif(a='0'andb='1'andc='0'andd='0'ande='0'andf='0'andg='0'andh='0')then

a1<='0';b1<='1';c1<='0';d1<='0';e1<='0';f1<='0';g1<='0';h1<='0';states<=w2;

elsif(a='0'andb='0'andc='1'andd='0'ande='0'andf='0'andg='0'andh='0')then

a1<='0';b1<='0';c1<='1';d1<='0';e1<='0';f1<='0';g1<='0';h1<='0';states<=w3;

elsif(a='0'andb='0'andc='0'andd='1'ande='0'andf='0'andg='0'andh='0')then

a1<='0';b1<='0';c1<='0';d1<='1';e1<='0';f1<='0';g1<='0';h1<='0';states<=w4;

elsif(a='0'andb='0'andc='0'andd='0'ande='1'andf='0'andg='0'andh='0')then

a1<='0';b1<='0';c1<='0';d1<='0';e1<='1';f1<='0';g1<='0';h1<='0';states<=w5;

elsif(a='0'andb='0'andc='0'andd='0'ande='0'andf='1'andg='0'andh='0')then

a1<='0';b1<='0';c1<='0';d1<='0';e1<='0';f1<='1';g1<='0';h1<='0';states<=w6;

elsif(a='0'andb='0'andc='0'andd='0'ande='0'andf='0'andg='1'andh='0')then

a1<='0';b1<='0';c1<='0';d1<='0';e1<='0';f1<='0';g1<='1';h1<='0';states<=w7;

elsif(a='0'andb='0'andc='0'andd='0'ande='0'andf='0'andg='0'andh='1')then

a1<='0';b1<='0';c1<='0';d1<='0';e1<='0';f1<='0';g1<='0';h1<='1';states<=w8;

endif;

endprocess;

endBehavioral;

2.功能图

(二)计分器模块JFQ

libraryIEEE;

useIEEE.STD_LOGIC_1164.ALL;

useIEEE.STD_LOGIC_ARITH.ALL;

useIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYJFQIS

PORT(RST:

INSTD_LOGIC;

ADD:

INSTD_LOGIC;

CHOS:

INSTD_LOGIC_VECTOR(3DOWNTO0);

AA2,AA1,AA0,BB2,BB1,BB0:

OUTSTD_LOGIC_VECTOR(3DOWNTO0)

CC2,CC1,CC0,DD2,DD1,DD0:

OUTSTD_LOGIC_VECTOR(3DOWNTO0));

ENDENTITYJFQ;

ARCHITECTUREARTOFJFQIS

BEGIN

PROCESS(RST,ADD,CHOS)IS

VARIBLEPOINTS_A2,POINTS_A1:

STD_LOGIC_VECTOR(3DOWNTO0);

VARIBLEPOINTS_B2,POINTS_B1:

STD_LOGIC_VECTOR(3DOWNTO0);

VARIBLEPOINTS_C2,POINTS_C1:

STD_LOGIC_VECTOR(3DOWNTO0);

VARIBLEPOINTS_D2,POINTS_D1:

STD_LOGIC_VECTOR(3DOWNTO0);

Begin

IF(ADD’EVENTANDADD=’1’)THEN

IFRST='1'THEN

POINTS_A2:

="0001";POINTS_A1="0000";

POINTS_B2:

="0001";POINTS_B1="0000";

POINTS_C2:

="0001";POINTS_C1="0000";

POINTS_D2:

="0001";POINTS_D1="0000";

ELSIFCHOS="0001"THEN

IFPOINTS_A1="1001"THEN

POINTS_A1="0000"THEN

IFPOINTS_A2="1001"THEN

POINTS_A2="0000"THEN

ELSE

POINTS_A2:

=POINTS_A2+'1';

ENDIF;

ELSE

POINTS_A1:

=POINTS_A1+'1';

ENDIF

ELSIFCHOS="0010"THEN

IFPOINTS_B1="1001"THEN

POINTS_B1="0000"THEN

IFPOINTS_B2="1001"THEN

POINTS_B2="0000"THEN

ELSE

POINTS_AB2:

=POINTS_B2+'1';

ENDIF;

ELSE

POINTS_B1:

=POINTS_B1+'1';

ENDIF

ELSIFCHOS="0001"THEN

IFPOINTS_C1="1001"THEN

POINTS_C1="0000"THEN

IFPOINTS_C2="1001"THEN

POINTS_C2="0000"THEN

ELSE

POINTS_C2:

=POINTS_C2+'1';

ENDIF;

ELSE

POINTS_C1:

=POINTS_C1+'1';

ENDIF;

ELSIFCHOS="0001"THEN

IFPOINTS_D1="1001"THEN

POINTS_D1="0000"THEN

IFPOINTS_D2="1001"THEN

POINTS_D2="0000"THEN

ELSE

POINTS_D2:

=POINTS_D2+'1';

ENDIF;

ELSE

POINTS_D1:

=POINTS_D1+'1';

ENDIF;

ENDIF;

ENDIF;

AA2<=POINTS_A2;AA1<=POINTS_A1;AA0<="0000";

BB2<=POINTS_B2;BB1<=POINTS_B1;BB0<="0000";

CC2<=POINTS_C2;CC1<=POINTS_C1;CC0<="0000";

DD2<=POINTS_D2;DD1<=POINTS_D1;DD0<="0000";

ENDARCHITECTUREART;

(三)计时器模块JSQ

1.VHDL源程序

----------------------------------------------------------------------------------

--Company:

--Engineer:

--CreateDate:

17:

00:

4606/24/2012

--DesignName:

--ModuleName:

jsq-Behavioral

--ProjectName:

--TargetDevices:

--Toolversions:

--Description:

--Dependencies:

--Revision:

--Revision0.01-FileCreated

--AdditionalComments:

----------------------------------------------------------------------------------

libraryIEEE;

useIEEE.STD_LOGIC_1164.ALL;

useIEEE.STD_LOGIC_ARITH.ALL;

useIEEE.STD_LOGIC_UNSIGNED.ALL;

----Uncommentthefollowinglibrarydeclarationifinstantiating

----anyXilinxprimitivesinthiscode.

--libraryUNISIM;

--useUNISIM.VComponents.all;

entityjsqis

port(clr,ldn,en,clk:

instd_logic;

ta,tb:

instd_logic;

qa,qb:

outstd_logic_vector(3downto0)

);

endjsq;

architectureBehavioralofjsqis

signalda,db:

std_logic_vector(3downto0);

begin

process(ta,tb,clr)

begin

ifclr='1'then

da<="0000";

db<="0000";

else

ifta='1'then

da<=da+1;

endif;

iftb='1'then

db<=db+1;

endif;

endif;

endprocess;

process(clk)

variabletmpa,tmpb:

std_logic_vector(3downto0);

begin

ifclr='1'then

tmpa:

="0000";

tmpb:

="0000";

elsifclk'eventandclk='1'then

ifldn='1'then

tmpa:

=da;

tmpb:

=db;

elsifen='1'then

iftmpa="0000"then

tmpa:

="1001";

iftmpb="0000"then

tmpb:

="0110";

else

tmpb:

=tmpb-1;

endif;

else

tmpa:

=tmpa-1;

endif;

endif;

endif;

qa<=tmpa;

qb<=tmpb;

endprocess;

endBehavioral;

2.计时器功能图

(四)译码器模块

1.VHDL源程序

----------------------------------------------------------------------------------

--Company:

--Engineer:

--CreateDate:

17:

13:

3306/24/2012

--DesignName:

--ModuleName:

ymq-Behavioral

--ProjectName:

--TargetDevices:

--Toolversions:

--Description:

--Dependencies:

--Revision:

--Revision0.01-FileCreated

--AdditionalComments:

----------------------------------------------------------------------------------

libraryIEEE;

useIEEE.STD_LOGIC_1164.ALL;

useIEEE.STD_LOGIC_ARITH.ALL;

useIEEE.STD_LOGIC_UNSIGNED.ALL;

----Uncommentthefollowinglibrarydeclarationifinstantiating

----anyXilinxprimitivesinthiscode.

--libraryUNISIM;

--useUNISIM.VComponents.all;

entityymqis

port(ain4:

instd_logic_vector(3downto0);

dout7:

outstd_logic_vector(6downto0)

);

endymq;

architectureBehavioralofymqis

begin

process(ain4)

begin

caseain4is

when"0000"=>dout7<="0111111";--0

when"0001"=>dout7<="0000110";--1

when"0010"=>dout7<="1011011";--2

when"0011"=>dout7<="1001111";--3

when"0100"=>dout7<="1100110";--4

when"0101"=>dout7<="1101101";--5

when"0110"=>dout7<="1111101";--6

when"0111"=>dout7<="0000111";--7

when"1000"=>dout7<="1111111";--8

when"1001"=>dout7<="1101111";--9

whenothers=>dout7<="0000000";--

endcase;

endprocess;

endBehavioral;

2.功能图

(六)顶层文件

libraryIEEE;

useIEEE.STD_LOGIC_1164.ALL;

useIEEE.STD_LOGIC_ARITH.ALL;

useIEEE.STD_LOGIC_UNSIGNED.ALL;

----Uncommentthefollowinglibrarydeclarationifinstantiating

----anyXilinx

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 初中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1