大学本科毕业设计毕业论文精选100基于FPGA和单片机的电子系统设计Word下载.docx
《大学本科毕业设计毕业论文精选100基于FPGA和单片机的电子系统设计Word下载.docx》由会员分享,可在线阅读,更多相关《大学本科毕业设计毕业论文精选100基于FPGA和单片机的电子系统设计Word下载.docx(103页珍藏版)》请在冰豆网上搜索。
(设计)题目
学 号
姓名
学院
专业
所在单位、部门
(1、内容包括:
①研究的目的和意义;
②国内外研究(设计)发展状况、发展水平与存在问题;
③研究(设计)主要内容、预期目标及拟解决的关键问题;
④研究(设计)方案与技术路线;
⑤研究(设计)方法;
⑥参考文献。
2、撰写要求:
字体为5号宋体字,字数不少于1500字。
)
工作计划进程表
时间
工作内容
选题是否合适:
□是□否
方案是否可行:
进程是否合理:
任务能否完成:
□能□不能
指导教师(签字)
年月日
指导小组组长(签字)
咔嚓大学本科生毕业论文(设计)中期报告
学号
论文(设计)题目
简述开题
以来所做
的具体工
作和取得
的进展或
成果
存在的
具体问题
下一步工
作具体设
想与安排
意见
指导教师签名:
年月日
咔嚓大学本科生毕业论文(设计)答辩小组意见
(答辩小组用表)(使用届别:
答辩地点
答
辩
提
问
录
记录员:
答辩小组
评语
及
成绩评定
成绩(百分制):
答辩小组组长:
教师对本科生毕业论文(设计)评语的主要评价方面及评价内容
教师
类别
评价方面
评价内容
指
导
教
师
过程
学生在论文(设计)过程中的治学态度、工作精神
学生掌握基础理论和专业知识的扎实程度
学生综合运用所学知识和专业技能分析和解决问题的能力
研究方法的科学性;
技术线路的可行性;
设计方案的合理性
毕业论文(设计)期间的出勤情况;
中期报告的撰写情况
论文(设计)质量
论文(设计)的整体结构是否符合撰写规范?
是否完成指定的论文(设计)任务(包括装订及附件)?
论文(设计)水平
论文(设计)的理论意义,对解决实际问题的意义
论文的观念是否有新意?
设计是否有创意?
论文书、设计说明书所体现的整体水平
评
阅
小
组
答辩过程
毕业论文(设计)的基本要点和见解的叙述情况
对答辩问题的反应、理解、表达情况
学生答辩过程中的精神状态
注:
不同的专业(方向)、不同的研究(设计)课题,根据其特点和侧重,教师评价的内容可进行必要的补充和相应的调整。
咔嚓大学本科生毕业论文(设计)评阅教师意见
(评阅教师用表)(使用届别:
学生学号
语
定
成
绩
评阅教师签名:
咔嚓大学本科生毕业论文(设计)指导教师意见
指导教师签名:
咔嚓大学本科生毕业论文(设计)成绩评定表
(学院答辩委员会用表)(使用届别:
(X1)
评阅教师
(X2)
(X3)
总评
分数成绩
(T)
等级
成绩
学院答辩委员会
审核意见
答辩委员会主席签章:
年月日
1、成绩评定一栏中,T=X1﹢X2﹢X3,X1=指导教师百分制成绩×
25%;
X2=评阅教师百分制成绩×
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
cout:
bit);
end
mux8;
architecture
exam
of
is
component
add
port(ain,bin,cin:
bit;
component;
signal
temp:
constant
x:
bit:
='
0'
;
begin
u4:
port
map(ain=>
a(4),bin=>
b(4),cin=>
temp(3),sum=>
sum(4),cout=>
cout);
u3:
a(3),bin=>
b(3),cin=>
temp
(2),sum=>
sum(3),cout=>
temp(3));
u2:
a
(2),bin=>
b
(2),cin=>
temp
(1),sum=>
sum
(2),cout=>
temp
(2));
u1:
a
(1),bin=>
b
(1),cin=>
x,sum=>
sum
(1),cout=>
temp
(1));
exam;
这是全加器
use
ieee.std_logic_1164.all;
add;
sum<
=ain
xor
bin
cin;
cout<
=(ain
nand
bin)
(cin
(ain
bin));
向左转|向右转
你是否想过,计算机为什么会加减乘除?
或者更直接一点,计算机的原理到底是什么?
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:
rest:
cq:
OUTstd_logic_vector(3DOWNTO0);
cout:
OUTstd_logic);
ENDcounter10;
ARCHITECTUREbehavOFcounter10IS
BEGIN
PROCESS(clk,rest,en)
VARIABLEcqi:
std_logic_vector(3DOWNTO0);
BEGIN
IF(rest='
)THEN
cqi:
=(OTHERS=>
'
);
ELSIF(clk'
EVENTANDclk='
1'
IF(en='
IF(cqi<
9)THEN
=cqi+1;
ELSE
ENDIF;
IF(cqi=9)THEN
cout<
='
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:
clk:
enddiv;
architecturebehavofdivis
signalq:
std_logic_vector(18downto0);
process(clk_sys)
begin
if(clk_sys'
eventandclk_sys='
)then
q<
=q+1;
endif;
clk<
=q(18);
endprocess;
endbehav;
2.二分频器
LIBRARYIEEE;
ENTITYdiv2IS
PORT(clk_scan:
sel:
OUTINTEGERRANGE0TO1);
end;
architecturew1ofdiv2is
signalcnt:
INTEGERRANGE0TO1;
process(clk_scan)
begin
if(clk_scan'
eventandclk_scan='
)then
cnt<
=cnt+1;
else
=cnt;
sel<
endw1;
3.防抖电路:
ENTITYdff_2IS
PORT(clk,ctin:
q_n:
architecturew1ofdff_2is
signalq1,q2:
std_logic;
process(clk)
ifclk'
EVENTANDCLK='
THEN
q1<
=ctin;
q2<
=q1;
q_n<
=not(notq1andq2);
end;
4.二十四进制加法器
ENTITYcnt_24IS
PORT(clk,rst,en:
cao:
OUTstd_logic;
QH,QL:
OUTstd_logic_vector(3downto0));
architecturebehavofcnt_24is
signalh0,h1:
std_logic_vector(3downto0);
process(rst,clk)
if(rst='
h1<
="
0000"
h0<
0001"
elsif(clk'
eventandclk='
if(en='
)then
if(h1=2andh0=4)thenh1<
h0<
elsif(h0=9)thenh0<
=h1+1;
elseh0<
=h0+1;
QL<
=h0;
QH<
=h1;
cao<
when(h1=2andh0=4anden='
)else'
endbehav;
5.八选四选择器
ENTITYmux8_4IS
PORT(SEL:
INSTD_LOGIC_VECTOR(3DOWNTO0);
QOUT:
OUTSTD_LOGIC_VECTOR(3DOWNTO0));
architectureaofmux8_4is
signals:
s<
=SEL;
PROCESS(QH,QL,S)
BEGIN
IFS='
THENQOUT<
=QL;
ELSEQOUT<
=QH;
ENDa;
6.译码显示模块
ENTITYbcd7IS
PORT(Q:
INstd_logic_vector(3downto0);
A,B,C,D,E,F,G:
architecturebehavofbcd7is
signaldout:
std_logic_vector(6downto0);
signaldin:
din<
=Q;
PROCESS(din)
casedinis
when"
=>
dout<
1111110"
0110000"
0010"
1101101"
0011"
1111011"
0100"
0110011"
0101"
1011011"
0110"
1011111"
0111"
1110000"
1000"
1111111"
1001"
11