EDA课程方案设计书报告Word格式文档下载.docx
《EDA课程方案设计书报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《EDA课程方案设计书报告Word格式文档下载.docx(14页珍藏版)》请在冰豆网上搜索。
由图3-3可知:
输入一个脉冲信号,同时当start为时开始计价;
c0、c1、c2、c3为价格的显示信号。
图3-3计费模块封装图
3.4控制功能的实现
由图3-4可知:
本模块主要是通过两个不同的输入使能信号,对两个输入脉冲进行选择输出,使能信号是计量模块中的输出,两个输入脉冲是分频模块输出的16HZ、10HZ的脉冲。
图3-4控制模块封装图
3.5译码和动态扫描功能实现
由图3-5可知:
该模块首先以一个case语句进行通道的选择,接着有以一个case语句对所选的通道进行动态扫描,由于时间极小,因此我们肉眼感觉数字是同时显示出来的。
图3-5译码模块封装图
3.6总体功能原理图
图3-6总体功能原理图
4程序调试
4.1分频模块波形仿真图
图4-1分频模块仿真波形图
由图4-1可知:
当输入240HZ的clk脉冲信号时,clk每出现240个脉冲时q1、q10、q16分别出现1、24、15个,相当于计费0.01元、1元、1.6元,帮助计费。
4.2计量模块波形仿真图
图4-2计量模块波形仿真图
由图4-2可知:
由于讲输入参数fin一直设为高,将stop一直设为低。
所以k1、k0记录路程的输出量有值,而m1、m0记录等待时间的输出量没有值。
4.3计费模块波形仿真图
图4-3计费模块波形仿真图
由图4-3可知:
输入一个脉冲信号,同时当start为高时开始计价;
c0、c1、c2、c3为价格的显示信号,逢9后一位将进1。
4.4控制模块波形仿真图
图4-4控制模块波形仿真图
由图4-4可知:
4.5译码显示模块波形仿真图
图4-5译码模块波形仿真图
由图4-5可知:
首先以一个case语句进行通道的选择,以8为二进制表示。
当某一位为1时,表示选择该通道接着。
接着又以一个case语句对所选的通道进行动态扫描,由于时间极小,因此在我们用肉眼感觉是同时显示出来的。
4.6总模块的波形仿真图
图4-6总模块的波形仿真图
5总结
一周的数字系统和逻辑设计的课程设计结束了,我的收获很大。
通过课程设计的编程和对编程过程中遇到的问题的思考,有效的提高了我对硬件描述语言的认识和理解,切实的提高了我的编程能力,补全了我的不足。
通过这次课程设计,我不仅可以巩固以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
这次课程设计使我懂得了理论与实际相结合的重要性,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为己为社会所用,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,可以说得是困难重重,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说代码的指令不够清楚……要想写好vhdl语言的程序,必须认真对待代码的每一个细节,还必须熟练的掌握各种命令,这对程序的调试是非常重要的。
这次课程设计让我也体会到了团队精神的重要性,通过和同学的交流,我学到了不同的思想。
真的我们不仅要学好基本的书本知识,更要注重动手能力。
真正让理论与实际相结合。
6附件
6.1分频功能实现的源代码如下:
libraryIEEE。
useIEEE.STD_LOGIC_1164.ALL。
useIEEE.STD_LOGIC_ARITH.ALL。
useIEEE.STD_LOGIC_UNSIGNED.ALL。
entityfpis
port(clk:
instd_logic。
q16:
outstd_logic。
--频率为16的时钟
q10:
--频率为10的时钟
q1:
outstd_logic)。
--频率为1的时钟
endfp。
architectureqqoffpis
begin
process(clk)
variablecout16:
integerrange0to14。
variablecout10:
integerrange0to23。
variablecout1:
integerrange0to239。
ifclk'
eventandclk='
1'
thenifcout16=14--240hz分频为16hz
thencout16:
=0。
q16<
='
。
elsecout16:
=cout16+1。
0'
endif。
ifcout10=23--240hz分频为10hz
thencout10:
q10<
elsecout10:
=cout10+1。
ifcout1=239--240hz分频为1hz
q1<
elsecout1:
=cout1+1。
endprocess。
endqq。
6.2计量功能模块实现的源代码
libraryieee。
useieee.std_logic_1164.all。
useieee.std_logic_arith.all。
useieee.std_logic_unsigned.all。
entityjiliangis
port(s:
instd_logic。
--计量开始信号
fin:
--计量路程的信号
stop:
--等待信号
clk1:
--计量驱动信号
en1,en0:
bufferstd_logic。
--计量控制信号
k1,k0:
bufferstd_logic_vector(3downto0)。
--路程的计量
m1,m0:
bufferstd_logic_vector(3downto0))。
--时间的计量
endjiliang。
architecturert2ofjiliangis
signalw:
integerrange0to59。
begin
process(clk1)
ifclk1'
eventandclk1='
then--驱动信号发挥作用
ifs='
then
w<
en1<
en0<
m1<
="
0000"
m0<
--初始化值
k1<
k0<
elsifstop='
then--等待信号为高,时间控制信号开始计时
ifw=59thenw<
ifm0="
1001"
thenm0<
ifm1="
0101"
thenm1<
elsem1<
=m1+1。
elsem0<
=m0+1。
ifm1&
m0>
"
00000010"
thenen1<
--当时间大于3min时使能信号
en1开始使能
elseen1<
endif。
elsew<
=w+1。
elsiffin='
ifk0="
thenk0<
ifk1="
thenk1<
elsek1<
=k1+1。
elsek0<
=k0+1。
ifk1&
k0>
thenen0<
--当路程大于3km时,使能信号
en0开始发挥作用
elseen0<
endrt2。
6.3计费功能实现的源代码
useIEEE.STD_LOGIC_ARITH.ALL。
entityjifeiis
port(clk2:
--计费驱动信号
start:
--计费开始信号
c0,c1,c2,c3:
--费用显示信号
endjifei。
architecturert3ofjifeiis
process(clk2,start)
ifstart='
thenc3<
c2<
c1<
1000"
c0<
elsifclk2'
eventandclk2='
ifc0="
thenc0<
ifc1="
thenc1<
ifc2="
thenc2<
ifc3="
--计费功能
elsec3<
=c3+1。
elsec2<
=c2+1。
elsec1<
=c1+1。
elsec0<
=c0+1。
endrt3。
6.4控制功能实现的源代码如下:
entitykongzhiis
port(ent0,ent1:
--输入的使能选择信号
clk_in1:
--输入脉冲
clk_in2:
clk_out:
outstd_logic)。
--输出脉冲
endkongzhi。
architecturert4ofkongzhiis
process(ent0,ent1)
ifent0='
then--根据条件选择所需的通道
clk_out<
=clk_in1。
elsifent1='
=clk_in2。
endprocess。
endrt4。
6.5译码和动态扫描功能实现的源代码如下:
entityyimais
port(
clk:
m1,m0,k1,k0,c3,c2,c1,c0:
instd_logic_vector(3downto0)。
sg:
outstd_logic_vector(7downto0)。
bt:
outstd_logic_vector(7downto0))。
end。
architecturebehavofyimais
signalcnt8:
std_logic_vector(2downto0)。
--定义信号
signala:
std_logic_vector(3downto0)。
signalb:
std_logic_vector(7downto0)。
signalc:
ifclk'
thencnt8<
=cnt8+1。
endif。
process(cnt8)
casecnt8is
when"
000"
=>
a<
=k0。
c<
00000001"
b(7)<
--根据cnt的条件选择通道
001"
=k1。
010"
=m0。
00000100"
011"
=m1。
00001000"
100"
=c0。
00010000"
101"
=c1。
00100000"
110"
=c2。
01000000"
111"
=c3。
10000000"
whenothers=>
null。
endcase。
process(a)--译码
caseais
=>
b(6downto0)<
0111111"
0001"
0000110"
0010"
1011011"
0011"
1001111"
0100"
1100110"
1101101"
0110"
1111101"
0111"
0000111"
1111111"
1101111"
sg<
=b。
bt<
=c。
end。
6.6顶层文件实现的源代码如下:
entitytaxiis
port(clk240:
start:
cha3,cha2,cha1,cha0:
outstd_logic_vector(3downto0)。
km1,km0:
min1,min0:
outstd_logic_vector(3downto0))。
endtaxi。
architecturebehavoftaxiis
componentfp--实现对分频模块的例化
port(clk:
q1:
endcomponent。
componentjiliang--实现对计量模块的例化
port(s:
k1,k0:
componentjifei--实现对计费模块的例化
port(clk2:
componentkongzhi--实现对控制模块的例化
port(ent0,ent1:
componentyima--实现对译码和动态扫描模块的例化
port(clk:
signalm3,m2,m1,n1,n0,l:
std_logic_vertor。
--定义中间信号
signaltemp0,temp1temp2,temp3,:
std_logic_verctor(3downto0)。
signalp3,p2,p1,p0:
std_logic。
u1:
fpportmap(clk=>
clk240,q16=>
m3,q10=>
m2,q1=>
.m1)。
u2:
jiliangportmap(s=>
start,fin=>
fin,stop=>
stop,
clk=>
m1,en1=>
n1,en0=>
n0,k1=>
temp3,
k0=>
temp2,m1=>
temp1,m0=>
temp0)。
u3:
kongzhiportmap(ent0=>
n1,ent1=>
n0,clk_int1=>
m2,
clk_in2=>
m3,clkout=>
l)。
u4:
jifeiportmap(clk2=>
l,start=>
start,c0=>
p0,c1=>
p1,
c2=>
p2,c3=>
p3)。
u5:
yimaportmap(clk=>
m1,m1=>
temp0,k1=>
temp2,c3=>
p3,c2=>
p2,c1=>
p1,c0=>
p0)。
endbehav。
7评分表
计算机与通信学院课程设计评分表
项目
评价
设计方案的合理性与创造性
设计与调试结果
设计说明书的质量
答辩陈述与回答问题情况
课程设计周表现情况
综合成绩
课题名称:
出租车自动计费器
教师签名:
日期:
版权申明
本文部分内容,包括文字、图片、以及设计等在网上搜集整理。
版权为潘宏亮个人所有
Thisarticleincludessomeparts,includingtext,pictures,anddesign.CopyrightisPanHongliang'
spersonalownership.
用户可将本文的内容或服务用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯本网站及相关权利人的合法权利。
除此以外,将本文任何内容或服务用于其他用途时,须征得本人及相关权利人的书面许可,并支付报酬。
Usersmayusethecontentsor