大学本科毕业设计毕业论文精选100基于FPGA和单片机的电子系统设计.docx

上传人:b****5 文档编号:6825445 上传时间:2023-01-10 格式:DOCX 页数:103 大小:2.20MB
下载 相关 举报
大学本科毕业设计毕业论文精选100基于FPGA和单片机的电子系统设计.docx_第1页
第1页 / 共103页
大学本科毕业设计毕业论文精选100基于FPGA和单片机的电子系统设计.docx_第2页
第2页 / 共103页
大学本科毕业设计毕业论文精选100基于FPGA和单片机的电子系统设计.docx_第3页
第3页 / 共103页
大学本科毕业设计毕业论文精选100基于FPGA和单片机的电子系统设计.docx_第4页
第4页 / 共103页
大学本科毕业设计毕业论文精选100基于FPGA和单片机的电子系统设计.docx_第5页
第5页 / 共103页
点击查看更多>>
下载资源
资源描述

大学本科毕业设计毕业论文精选100基于FPGA和单片机的电子系统设计.docx

《大学本科毕业设计毕业论文精选100基于FPGA和单片机的电子系统设计.docx》由会员分享,可在线阅读,更多相关《大学本科毕业设计毕业论文精选100基于FPGA和单片机的电子系统设计.docx(103页珍藏版)》请在冰豆网上搜索。

大学本科毕业设计毕业论文精选100基于FPGA和单片机的电子系统设计.docx

大学本科毕业设计毕业论文精选100基于FPGA和单片机的电子系统设计

 

咔嚓大学

本科生毕业设计

 

基于FPGA和单片机的电子系统设计

学生姓名

XXX

所在专业

所在班级

申请学位

指导教师

YYY

职称

副指导教师

职称

答辩时间

咔嚓大学本科生毕业论文(设计)课题申请表

(指导教师用表)(使用届别:

届)

课题

情况

课题名称

课题来源

□科研项目(□国家级□省部级□厅级□市局级□校级)

□生产或社会实际□教学□自拟

*说明:

课题类别

□论文□设计

第几次立项

□1次□2次□≥3次

难易程度

□较难□适中□简单

工作量

□较大□适中□较小

面向专业

学院专业

同一课题多名学生分工情况

□主要内容不同□内容同参数不同□分别做课题的不同部分

指导教师姓名

所在单位(部门)

职称

 

指导小组审题意见

学院领导小组意见

 

选题学生

 

*注:

1、“说明”栏填写毕业论文(设计)课题所来自的科研项目名称、或企事业单位名称或教学内容。

2、此表一式三份,指导教师、选题学生、学院各存一份;

咔嚓大学本科生毕业论文(设计)开题报告

(学生用表)(使用届别:

届)

毕业论文

(设计)题目

学  号

姓名

学院

专业

指导教师

所在单位、部门

职称

(1、内容包括:

①研究的目的和意义;②国内外研究(设计)发展状况、发展水平与存在问题;③研究(设计)主要内容、预期目标及拟解决的关键问题;④研究(设计)方案与技术路线;⑤研究(设计)方法;⑥参考文献。

2、撰写要求:

字体为5号宋体字,字数不少于1500字。

工作计划进程表

时间

工作内容

选题是否合适:

□是□否

方案是否可行:

□是□否

进程是否合理:

□是□否

任务能否完成:

□能□不能

指导教师(签字)

年月日

选题是否合适:

□是□否

方案是否可行:

□是□否

进程是否合理:

□是□否

任务能否完成:

□能□不能

指导小组组长(签字)

年月日

咔嚓大学本科生毕业论文(设计)中期报告

(学生用表)(使用届别:

届)

学号

姓名

学院

专业

论文(设计)题目

简述开题

以来所做

的具体工

作和取得

的进展或

成果

存在的

具体问题

下一步工

作具体设

想与安排

指导教师

意见

 

指导教师签名:

年月日

咔嚓大学本科生毕业论文(设计)答辩小组意见

(答辩小组用表)(使用届别:

届)

学号

姓名

学院

专业

毕业论文

(设计)题目

答辩时间

答辩地点

 

记录员:

年月日

答辩小组

评语

成绩评定

 

成绩(百分制):

答辩小组组长:

年月日

教师对本科生毕业论文(设计)评语的主要评价方面及评价内容

 

教师

类别

评价方面

评价内容

过程

学生在论文(设计)过程中的治学态度、工作精神

学生掌握基础理论和专业知识的扎实程度

学生综合运用所学知识和专业技能分析和解决问题的能力

研究方法的科学性;技术线路的可行性;设计方案的合理性

毕业论文(设计)期间的出勤情况;中期报告的撰写情况

论文(设计)质量

论文(设计)的整体结构是否符合撰写规范?

是否完成指定的论文(设计)任务(包括装订及附件)?

论文(设计)水平

论文(设计)的理论意义,对解决实际问题的意义

论文的观念是否有新意?

设计是否有创意?

论文书、设计说明书所体现的整体水平

论文(设计)质量

论文(设计)的整体结构是否符合撰写规范?

是否完成指定的论文(设计)任务(包括装订及附件)?

论文(设计)水平

论文(设计)的理论意义,对解决实际问题的意义

论文的观念是否有新意?

设计是否有创意?

论文书、设计说明书所体现的整体水平

答辩过程

毕业论文(设计)的基本要点和见解的叙述情况

对答辩问题的反应、理解、表达情况

学生答辩过程中的精神状态

论文(设计)质量

论文(设计)的整体结构是否符合撰写规范?

是否完成指定的论文(设计)任务(包括装订及附件)?

论文(设计)水平

论文(设计)的理论意义,对解决实际问题的意义

论文的观念是否有新意?

设计是否有创意?

论文书、设计说明书所体现的整体水平

注:

不同的专业(方向)、不同的研究(设计)课题,根据其特点和侧重,教师评价的内容可进行必要的补充和相应的调整。

咔嚓大学本科生毕业论文(设计)评阅教师意见

(评阅教师用表)(使用届别:

届)

学生学号

姓名

学院

专业

毕业论文

(设计)题目

 

成绩(百分制):

评阅教师签名:

年月日

咔嚓大学本科生毕业论文(设计)指导教师意见

(指导教师用表)(使用届别:

届)

学生学号

姓名

学院

专业

毕业论文

(设计)题目

成绩(百分制):

指导教师签名:

年月日

咔嚓大学本科生毕业论文(设计)成绩评定表

(学院答辩委员会用表)(使用届别:

届)

学生学号

姓名

学院

专业

毕业论文

(设计)题目

成绩评定

指导教师

(X1)

评阅教师

(X2)

答辩小组

(X3)

总评

分数成绩

(T)

等级

成绩

 

学院答辩委员会

审核意见

 

 

答辩委员会主席签章:

年月日

注:

1、成绩评定一栏中,T=X1﹢X2﹢X3,X1=指导教师百分制成绩×25%;X2=评阅教师百分制成绩×25%;X3=答辩小组百分制成绩×50%。

2、等级成绩:

总评分数成绩四舍五入取整之后,90分及以上为“优秀”、80―89分为“良好”、70―79分为“中等”、60―69分为“及格”、59分以下为“不及格”。

1

摘要

该课程设计首先利用VHDL语言,以QuartusII软件作为开发平台,主要设计了出租车计程计价表和函数波形发生器,其中出租车计程计价表具有车型设置、起步里程设置、起步价设置、分时计价设置、里程显示、计费显示、计时显示及点阵数码管显示汉字等功能。

函数波形发生器主要包含了递增锯齿波、递减锯齿波、三角波、正弦波、阶梯波、方波等功能。

并对上述两个系统进行了程序仿真、动态扫描等步骤。

其次,利用单片机做了一个函数波形发生器,可以调频率和切换波形。

并对其进行仿真分析。

 

关键词:

VHDL语言、单片机、QuartusII软件、仿真

 

第一部分FPGA的系统设计

一、四位加法器

四位串行加法器采用四次例化全加器实现

a,b为两个加数,sum为和的输出,也是四位,cout为进位输出

至于具体原理,我就不多说了,网上很多的也比我说的好

再给你一张波形图

library ieee;

entity mux8 is 

port(a,b:

in bit_vector(4 downto 1);

     sum:

out bit_vector(4 downto 1);

    cout:

out bit);

end mux8;

architecture exam of mux8 is

component add  

   port(ain,bin,cin:

in bit;

               sum:

out bit;

              cout:

out bit);

end component;

signal temp:

bit_vector(4 downto 1);

constant x:

 bit:

='0';

begin

u4:

add port map(ain=>a(4),bin=>b(4),cin=>temp(3),sum=>sum(4),cout=>cout);

u3:

add port map(ain=>a(3),bin=>b(3),cin=>temp

(2),sum=>sum(3),cout=>temp(3));

u2:

add port map(ain=>a

(2),bin=>b

(2),cin=>temp

(1),sum=>sum

(2),cout=>temp

(2));

u1:

add port map(ain=>a

(1),bin=>b

(1),cin=>x,sum=>sum

(1),cout=>temp

(1));

end exam;

这是全加器

library ieee;

use ieee.std_logic_1164.all;

entity add is

  port(ain,bin,cin:

in bit;

               sum:

out bit;

              cout:

out bit);

end add;

architecture exam of add is

begin

sum<=ain xor bin xor cin;

cout<=(ain nand bin) nand (cin nand (ain xor bin));

end exam;

向左转|向右转

你是否想过,计算机为什么会加减乘除?

或者更直接一点,计算机的原理到底是什么?

Waitingforfriday有一篇详细的教程,讲解了如何自己动手,制作一台四位计算机。

从中可以看到,二进制、数理逻辑、电子学怎样融合在一起,构成了现代计算机的基础。

一、什么是二进制?

首先,从最简单的讲起。

计算机内部采用二进制,每一个数位只有两种可能"0"和"1",运算规则是"逢二进一"。

举例来说,有两个位A和B,它们相加的结果只可能有四种。

这张表就叫做"真值表"(truthtable),其中的sum表示"和位",carry表示"进位"。

如果A和B都是0,和就是0,因此"和位"和"进位"都是0;如果A和B有一个为1,另一个为0,和就是1,不需要进位;如果A和B都是1,和就是10,因此"和位"为0,"进位"为1。

二、逻辑门(LogicGate)

布尔运算(Booleanoperation)的规则,可以套用在二进制加法上。

布尔运算有三个基本运算符:

AND,OR,NOT,又称"与门"、"或门"、"非门",合称"逻辑门"。

它们的运算规则是:

  AND:

如果(A=1ANDB=1),则输出结果为1。

  OR:

如果(A=1ORB=1),则输出结果为1。

  NOT:

如果(A=1),则输出结果为0。

两个输入(A和B)都为1,AND(与门)就输出1;只要有任意一个输入(A或B)为1,OR(或门)就输出1;NOT(非门)的作用,则是输出一个输入值的相反值。

它们的图形表示如下:

三、真值表的逻辑门表示

现在把"真值表"的运算规则,改写为逻辑门的形式。

先看sum(和位),我们需要的是这样一种逻辑:

当两个输入不相同时,输出为1,因此运算符应该是OR;当两个输入相同时,输出为0,这可以用两组AND和NOT的组合实现。

最后的逻辑组合图如下:

再看carry(进位)。

它比较简单,两个输入A和B都为1就输出1,否则就输出0,因此用一个AND运算符就行了。

现在把sum和carry组合起来,就能得到整张真值表了。

这被称为"半加器"(half-adder),因为它只考虑了单独两个位的相加,没有考虑可能还存在低位进上来的位。

四、扩展的真值表和全加器

如果把低位进上来的位,当做第三个输入(input),也就是说,除了两个输入值A和B以外,还存在一个输入(input)的carry,那么问题就变成了如何在三个输入的情况下,得到输出(output)的sum(和位)和carry(进位)。

这时,真值表被扩展成下面的形式:

如果你理解了半加器的设计思路,就不难把它扩展到新的真值表,这就是"全加器"(full-adder)了。

五、全加器的串联

多个全加器串联起来,就能进行二进制的多位运算了。

先把全加器简写成方块形式,注明三个输入(A、B、Cin)和两个输出(S和Cout)。

然后,将四个全加器串联起来,就得到了四位加法器的逻辑图。

六、逻辑门的晶体管实现

下一步,就是用晶体管做出逻辑门的电路。

先看NOT。

晶体管的基极(Base)作为输入,集电极(collector)作为输出,发射极(emitter)接地。

当输入为1(高电平),电流流向发射极,因此输出为0;当输入为0(低电平),电流从集电极流出,因此输出为1。

接着是AND。

这需要两个晶体管,只有当两个基极的输入都为1(高电平),电流才会流向输出端,得到1。

最后是OR。

这也需要两个晶体管,只要两个基极中有一个为1(高电平),电流就会流向输出端,得到1。

七、全加器的电路

将三种逻辑门的晶体管实现,代入全加器的设计图,就可以画出电路图了。

(点击看大图)

按照电路图,用晶体管和电路板组装出全加器的集成电路。

左边的三根黄线,分别代表三个输入A、B、Cin;右边的两根绿线,分别代表输出S和Cout。

八、制作计算机

将四块全加器的电路串联起来,就是一台货真价实的四位晶体管计算机了,可以计算0000~1111之间的加法。

电路板的下方有两组各四个开关,标注着"A"和"B",代表两个输入数。

从上图可以看到,A组开关是"上下上上",代表1011(11);B组开关是"上下下下",代表1000(8)。

它们的相加结果用五个LED灯表示,上图中是"亮暗暗亮亮",代表10011(19),正是1011与1000的和。

九、结论

虽然这个四位计算机非常简陋,但是从中不难体会到现代计算机的原理。

完成上面的四位加法,需要用到88个晶体管。

虽然当代处理器包含的晶体管数以亿计,但是本质上都是上面这样简单电路的累加。

1.1

(一)图形输入

1.半加器

2.一位全加器

3.四位加法器

4.顶层仿真波形:

二、千位计数器:

1.2

(一)程序代码(基于文本和图形的混合设计):

1、十位计数器:

LIBRARYieee;

USEieee.std_logic_1164.ALL;

USEieee.std_logic_unsigned.ALL;

ENTITYcounter10IS

PORT(clk:

INstd_logic;

en:

INstd_logic;

rest:

INstd_logic;

cq:

OUTstd_logic_vector(3DOWNTO0);

cout:

OUTstd_logic);

ENDcounter10;

ARCHITECTUREbehavOFcounter10IS

BEGIN

PROCESS(clk,rest,en)

VARIABLEcqi:

std_logic_vector(3DOWNTO0);

BEGIN

IF(rest='0')THEN

cqi:

=(OTHERS=>'0');

ELSIF(clk'EVENTANDclk='1')THEN

IF(en='1')THEN

IF(cqi<9)THEN

cqi:

=cqi+1;

ELSE

cqi:

=(OTHERS=>'0');

ENDIF;

IF(cqi=9)THEN

cout<='1';

ELSE

cout<='0';

ENDIF;

ENDIF;

ENDIF;

cq<=cqi;

ENDPROCESS;

ENDbehav;

2、千位计数器(顶层电路):

仿真结果:

三、药片自动包装计数控制显示系统

(一)设计要求

设计一个药片自动包装计数控制显示系统。

药片通过透明的传送导管加到药瓶中,当药片挡住光电开关时,累计加上一个数。

每计完24片药片,就完成1瓶药片的装瓶,机械手就自动将瓶盖拧上。

1.3

(二)顶层设计方框图

1.4(三)程序代码部分

1.十八分频器

LIBRARYIEEE;

USEieee.std_logic_1164.ALL;

USEieee.std_logic_unsigned.ALL;

ENTITYdivIS

PORT(clk_sys:

INstd_logic;

clk:

OUTstd_logic);

enddiv;

architecturebehavofdivis

signalq:

std_logic_vector(18downto0);

begin

process(clk_sys)

begin

if(clk_sys'eventandclk_sys='0')then

q<=q+1;

endif;

clk<=q(18);

endprocess;

endbehav;

2.二分频器

LIBRARYIEEE;

USEieee.std_logic_1164.ALL;

ENTITYdiv2IS

PORT(clk_scan:

INstd_logic;

sel:

OUTINTEGERRANGE0TO1);

end;

architecturew1ofdiv2is

signalcnt:

INTEGERRANGE0TO1;

begin

process(clk_scan)

begin

if(clk_scan'eventandclk_scan='1')then

cnt<=cnt+1;

else

cnt<=cnt;

endif;

endprocess;

sel<=cnt;

endw1;

3.防抖电路:

LIBRARYIEEE;

USEieee.std_logic_1164.ALL;

ENTITYdff_2IS

PORT(clk,ctin:

INstd_logic;

q_n:

OUTstd_logic);

end;

architecturew1ofdff_2is

signalq1,q2:

std_logic;

begin

process(clk)

begin

ifclk'EVENTANDCLK='1'THEN

q1<=ctin;q2<=q1;

endif;

endprocess;

q_n<=not(notq1andq2);

end;

4.二十四进制加法器

LIBRARYIEEE;

USEieee.std_logic_1164.ALL;

USEieee.std_logic_unsigned.ALL;

ENTITYcnt_24IS

PORT(clk,rst,en:

INstd_logic;

cao:

OUTstd_logic;

QH,QL:

OUTstd_logic_vector(3downto0));

end;

architecturebehavofcnt_24is

signalh0,h1:

std_logic_vector(3downto0);

begin

process(rst,clk)

begin

if(rst='0')then

h1<="0000";h0<="0001";

elsif(clk'eventandclk='1')then

if(en='1')then

if(h1=2andh0=4)thenh1<="0000";h0<="0001";

elsif(h0=9)thenh0<="0000";h1<=h1+1;

elseh0<=h0+1;

endif;

endif;

endif;

QL<=h0;QH<=h1;

endprocess;

cao<='1'when(h1=2andh0=4anden='1')else'0';

endbehav;

5.八选四选择器

LIBRARYIEEE;

USEieee.std_logic_1164.ALL;

ENTITYmux8_4IS

PORT(SEL:

INstd_logic;

QH,QL:

INSTD_LOGIC_VECTOR(3DOWNTO0);

QOUT:

OUTSTD_LOGIC_VECTOR(3DOWNTO0));

end;

architectureaofmux8_4is

signals:

std_logic;

begin

s<=SEL;

PROCESS(QH,QL,S)

BEGIN

IFS='0'THENQOUT<=QL;

ELSEQOUT<=QH;

ENDIF;

ENDPROCESS;

ENDa;

6.译码显示模块

LIBRARYIEEE;

USEieee.std_logic_1164.ALL;

USEieee.std_logic_unsigned.ALL;

ENTITYbcd7IS

PORT(Q:

INstd_logic_vector(3downto0);

A,B,C,D,E,F,G:

OUTstd_logic);

end;

architecturebehavofbcd7is

signaldout:

std_logic_vector(6downto0);

signaldin:

std_logic_vector(3downto0);

begin

din<=Q;

PROCESS(din)

begin

casedinis

when"0000"=>dout<="1111110";

when"0001"=>dout<="0110000";

when"0010"=>dout<="1101101";

when"0011"=>dout<="1111011";

when"0100"=>dout<="0110011";

when"0101"=>dout<="1011011";

when"0110"=>dout<="1011111";

when"0111"=>dout<="1110000";

when"1000"=>dout<="1111111";

when"1001"=>dout<="11

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

当前位置:首页 > 法律文书 > 调解书

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

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