出租车Word文档下载推荐.docx
- 文档编号:18393506
- 上传时间:2022-12-16
- 格式:DOCX
- 页数:26
- 大小:299.39KB
出租车Word文档下载推荐.docx
《出租车Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《出租车Word文档下载推荐.docx(26页珍藏版)》请在冰豆网上搜索。
start:
--计费开始信号
stop:
--等待信号
fin:
--里程脉冲信号
sg:
outstd_logic_vector(6downto0);
--duanma
bt:
outstd_logic_vector(7downto0));
--weima
endtaxi_c;
architecturebehavioraloftaxi_cis
signalf_1:
std_logic;
--频率为1Hz的信号
signalq_1:
integerrange0to99;
--分频系数
signalw:
integerrange0to59;
--计时按分钟算
signalc3,c2,c1,c0:
std_logic_vector(3downto0);
--制费用计数器
signalk1,k0:
std_logic_vector(3downto0):
="
0000"
;
--公里计数器
signalm1:
std_logic_vector(2downto0):
000"
--分的十位计数器
signalm0:
--分的个位计数器
signalen1,en0:
--使能信号
signaltemp0,temp1:
std_logic_vector(3downto0);
signalcounter:
std_logic_vector(31downto0);
componentdiv
port(clk,start:
instd_logic;
q_1:
bufferintegerrange0to99;
f_1:
bufferstd_logic);
endcomponent;
componentjifei
port(start,clk,en0,en1:
k0:
instd_logic_vector(3downto0):
m0:
c3,c2,c1,c0:
bufferstd_logic_vector;
temp0:
bufferstd_logic_vector(3downto0);
temp1:
bufferstd_logic_vector(3downto0));
endcomponent;
componentjishi
port(f_1,start,stop:
m0,m1:
bufferstd_logic_vector);
componentkongzhi
port(clk,start,stop:
k0,k1:
instd_logic_vector(3downto0):
m0:
instd_logic_vector(3downto0):
m1:
instd_logic_vector(2downto0):
en0,en1:
outstd_logic);
componentlichji
port(start,fin,stop:
bufferstd_logic_vector(3downto0):
);
componentxianshi
port(f_1,start:
k0,k1:
m0:
instd_logic_vector;
km1,km0,min1,min0:
outstd_logic_vector;
cha3,cha2,cha1,cha0:
outstd_logic_vector);
componentscan_led
PORT(CLK:
INSTD_LOGIC;
count:
inSTD_LOGIC_VECTOR(31DOWNTO0);
sg:
OUTSTD_LOGIC_VECTOR(6DOWNTO0);
--段控制信号输出
bt:
OUTSTD_LOGIC_VECTOR(7DOWNTO0));
--位控制信号输出
begin
u1:
divportmap(clk=>
clk,start=>
start,q_1=>
q_1,f_1=>
f_1);
u2:
jifeiportmap(en0=>
en0,en1=>
en1,start=>
start,clk=>
clk,k0=>
temp0,m0=>
temp1,c3=>
c3,c2=>
c2,c1=>
c1,c0=>
c0);
u3:
jishiportmap(stop=>
stop,start=>
start,f_1=>
f_1,m0=>
m0,m1=>
m1);
u4:
kongzhiportmap(start=>
start,stop=>
stop,clk=>
k0,k1=>
k1,m0=>
m1,en0=>
en0,en1=>
en1);
u5:
lichjiportmap(fin=>
fin,start=>
stop,k0=>
k1);
u6:
xianshiportmap(f_1=>
f_1,start=>
start,m0=>
m1,k0=>
k1,c3=>
c2,c1=>
c0,km1=>
counter(31downto28),km0=>
counter(27downto24),min1=>
counter(23downto20),min0=>
counter(19downto16),cha3=>
counter(15downto12),cha2=>
counter(11downto8),cha1=>
counter(7downto4),cha0=>
counter
(3downto0));
u7:
scan_ledportmap(clk=>
clk,count=>
counter,sg=>
sg,bt=>
bt);
endarchitecturebehavioral;
顶层波形图
顶层RTL
分频文件程序:
entitydivis
endentitydiv;
architectureoneofdivis
process(clk,start)
ifclk'
eventandclk='
1'
then
ifstart='
0'
thenf_1<
='
q_1<
=0;
else
ifq_1=99thenq_1<
f_1<
--此IF语句得到频率为1Hz的信号
elseq_1<
=q_1+1;
endif;
endprocess;
endarchitectureone;
分频RTL图
分频波形图
里程程序设计:
entitylichjiis
endentity;
architectureoneoflichjiis
process(fin)
iffin'
eventandfin='
then
k1<
k0<
elsifstop='
then--IF语句完成等待计时
ifk0="
1001"
ifk1="
elsek1<
=k1+1;
else
=k0+1;
endarchitecture;
里程RTL图
里程波形图
计时程序设计:
entityjishiis
--w:
bufferintegerrange0to59;
m1:
bufferstd_logic_vector(2downto0);
bufferstd_logic_vector(3downto0));
architectureacofjishiis
process(f_1)
iff_1'
eventandf_1='
ifstart='
then--w<
m1<
m0<
--ifw=59then
--w<
ifm0="
--此IF语句完成分计数
ifm1="
101"
elsem1<
=m1+1;
elsem0<
=m0+1;
--elsew<
=w+1;
endarchitecture;
计时RTL
计时波形图
计费程序设计:
entityjifeiis
k0,m0:
bufferstd_logic_vector(3downto0);
architectureshuofjifeiis
process(clk,start)
variablec13,c15:
integer;
c3<
c2<
c1<
0101"
c0<
c13:
c15:
temp0<
temp1<
elsifclk'
if(en0='
)then
if(c13<
13)then
=c13+1;
if(c13=1)then
temp0<
=k0;
ifc0="
thenc0<
--此IF语句完成对费用的计数
ifc1="
thenc1<
ifc2="
thenc2<
ifc3="
thenc3<
elsec3<
=c3+1;
elsec2<
=c2+1;
elsec1<
=c1+1;
elsec0<
=c0+1;
elsif(k0/=temp0)thenc13:
endif;
elsif(en1='
if(c15<
15)then
c15:
=c15+1;
if(c15=1)then
=m0;
ifc0="
elsif(m0/=temp1)thenc15:
计费RTL
计费波形图
控制程序设计:
entitykongzhiis
instd_logic_vector(3downto0);
instd_logic_vector(3downto0);
instd_logic_vector(2downto0);
endentity;
architectureoneofkongzhiis
process(clk)
begin
ifclk'
en0<
en1<
ifk1&
k0>
"
00000011"
ifm1&
m0>
0000010"
elseen1<
控制波形图
控制RTL
显示程序设计:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYSCAN_LEDIS
PORT(CLK:
SG:
BT:
END;
ARCHITECTUREoneOFSCAN_LEDIS
SIGNALCNT8:
STD_LOGIC_VECTOR(2DOWNTO0);
SIGNALA:
INTEGERRANGE0TO15;
BEGIN
P1:
process(CNT8)
BEGIN
CASECNT8IS
WHEN"
=>
BT<
="
00000001"
;
A<
=conv_integer(count(27downto24));
--公里个位
001"
00000010"
=conv_integer(count(31downto28));
--公里十位
010"
00000100"
=conv_integer(count(19downto16));
--分个位
011"
00001000"
=conv_integer(count(23downto20));
--分十位
100"
00010000"
=conv_integer(count(3downto0));
--角
00100000"
=conv_integer(count(7downto4));
--元
110"
01000000"
=conv_integer(count(11downto8));
--十位
111"
10000000"
=conv_integer(count(15downto12));
--百位
WHENOTHERS=>
NULL;
ENDCASE;
ENDPROCESSp1;
p2:
PROCESS(clk)
IFclk'
eventANDCLK='
THENCNT8<
=CNT8+1;
ENDIF;
ENDPROCESSP2;
P3:
process(A)--译码电路
CASEAIS
WHEN0=>
SG<
0111111"
WHEN1=>
0000110"
WHEN2=>
1011011"
WHEN3=>
1001111"
WHEN4=>
1100110"
WHEN5=>
1101101"
WHEN6=>
1111101"
WHEN7=>
0000111"
WHEN8=>
1111111"
WHEN9=>
1101111"
WHEN10=>
1000000"
ENDCASE;
ENDPROCESSP3;
END;
Scan_led的波形图
引脚锁定:
感受:
实训心得
2010.5.24
1:
将大程序拆分为子模块,设计调用模块的顶层文件
2010.5.25
开始对各个模块进行综合,有的模块发现错误,点击错误报告,锁定错误范围后,进行了一一排除。
2:
各个模块综合成功后,开始对各个模块进行仿真测试,看是否满足要求。
2010.5.26
进行顶层文件综合与仿真测试。
查看程序发现停止时计算停留时间模块不能正确工作,调出计时子模块后,开始修改,编译,仿真,发现有一个if语句的判断符号写成了赋值符号,致使此if语句不能正确运行!
引脚锁定时发现只有四个数码管的引脚,但程序需要用八个,后只接了四个,分别用于显示出租车停留时间和出租车行驶里程,使其余显示总费用的四个悬空,进行下载验证,发现程序设计正确
2010.5.27
掌握了怎样用mux_plusⅡ烧入程序,将程序的引脚锁定后烧入芯片,进行硬件测试,达到预期结果,试验成功,经老师验证合格!
2010.5.28
老师要求需用八个数码管,并给出一个译码模块,所以,我们立刻将原程序备份后开始修改程序,将数码管由静态显示变为动态显示!
经过一个小时的修改,程序编译成功,继而引脚锁定,程序下载,进行硬件测试,实验结果正确,设计成功!
二:
实验感受
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 出租车
![提示](https://static.bdocx.com/images/bang_tan.gif)