EDA课程设计内容Word文档下载推荐.docx
- 文档编号:8007817
- 上传时间:2023-05-09
- 格式:DOCX
- 页数:44
- 大小:353.80KB
EDA课程设计内容Word文档下载推荐.docx
《EDA课程设计内容Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《EDA课程设计内容Word文档下载推荐.docx(44页珍藏版)》请在冰点文库上搜索。
(1)新建VHDL文件,开始编写VHDL程序。
(2)保存VHDL文件,文件取名要与程序实体名要一致。
(3)创建新工程
按下“保存”按纽后会出现如下提示。
提示是否为此文件建立一个工程,这很重要。
然后点击“是”,出现以下窗口,点“Next>
”。
图1.1新建工程提示
(4)器件的选择
继续点“Next>
然后选择FPGA或CPLD的有关参数,这些参数都是根据目标芯片来选择的,如下图所示。
图1.2芯片选择
(5)编译
编译:
选择processing菜单中的startcompilation命令。
编译完成的提示如下,点击确定即可。
(6)仿真
这时可以进行仿真,首先要建立波形文件,点“File选项中New”,出现如下窗口:
图1.3建立波形文件
选择“VectorwaveformFile”点“OK”。
出现以下窗口。
图1.4建立波形文件后出现窗口
双击左边的空白处,设定输入输出信号。
设定好波形后,保存波形。
之后点
进行仿真。
(7)锁定引脚
引脚锁定,如下图操作:
引脚的锁定是根据不同的电路和不同功能来确定的,不是一层不变的。
选择Assignments菜单下的Pins命令,出现以下窗口,
图1.5引脚分配图
如果是下载到实验箱上则需连续按“模式选择”按钮选择模式5,再按“系统复位”按钮。
进行引脚锁定,查阅附表,分别点“location”选择引脚号。
引脚锁定后再编译。
如同此前进行过的。
编译成功后点确定。
(8)下载
选择Tools菜单下的Programmer命令,然后在Program/Configure下打上钩选中,点“start”按钮开始下载,“Progress”进度条显示下载进度。
成功下载后如图所示:
图1.6下载到实验箱界面
下载完后就可以在实验箱查看结果。
通过上面的步骤分别下载到实验箱中和FPGA中,验证了在仿真中的结果是正确的。
2课题设计
2.1出租车计费器设计内容
(1)能实现计程与计费功能,计费标准为:
按行驶里程收费,分为白天与黑夜。
白天收费标准:
起步价为6.00元,超过1公里按1元/公里计算,超过3公里多收10块钱的空车返回费用。
黑夜收费标准:
起步价为8.00元,超过1公里按2元/公里计算,超过3公里多收10块钱的空车返回费用。
(2)能够有对路程清零与对计费停止功能。
当无乘客不需要计费时,对路程清零及对价格清零。
(3)实够实现按键控制显示路程、价格及当前车速,当车速超过4Km/h时发出警报。
2.2出租车计费器设计方框图
出租车计费器是由输入信号、分频器(供蜂鸣器发生警报提供不同的频率)、路程计数模块、计费模块、控制模块(控制输出显示路程、价格或当前车速)、及译码显示模块(八个七段数码管)。
其总体方框图如下所示:
图2.1总体设计方框图
2.3出租车计费器系统各功能模块及模块程序
2.3.1计程与计费模块
计程与计费模块由一个时钟输入端clk与使能端en及复位端rst端与位选端SL[2..0]及显示输出端led[6..0]构成。
其en端为‘1’时允许计数,rst为‘1’时计数清零。
图2.2计程与计费模块图
其仿真图如下所示:
图2.3计程与计费模块仿真图
其程序如下:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_arith.all;
useieee.std_logic_unsigned.all;
entitytaxiis
port(Clk:
instd_logic;
daytime:
Rst:
en:
Motor:
Display:
outstd_logic_vector(6downto0);
SEG_SEL:
bufferstd_logic_vector(2downto0)
);
endtaxi;
architectureoneoftaxiis
signalDisp_Temp:
integerrange0to15;
signalDisp_Decode:
std_logic_vector(6downto0);
signalMeter1,Meter10,Meter100,Meter1K:
integerrange0to9;
signalMoney1,Money10,Money100:
signalOld_Money1:
begin
process(Motor)
if(Rst='
0'
)then
Meter1<
=0;
Meter10<
Meter100<
Meter1K<
elsif(Motor'
eventandMotor='
1'
if(Meter1=9)then
if(Meter10=9)then
if(Meter100=9)then
if(Meter1K=9)then
else
=Meter1K+1;
endif;
else
=Meter100+1;
=Meter10+1;
=Meter1+1;
endprocess;
process(Clk)
ifen='
thennull;
elsif(Rst='
Money1<
Money10<
Money100<
elsif(Clk'
eventandClk='
ifdaytime='
then--baitian
if(Meter1K<
1)then
=6;
Old_Money1<
=Meter100;
=Money1;
if(Old_Money1=9andMoney1=0)then
if(Money10=9)then
if(Money100=9)then
=Money100+1;
=Money10+1;
if(Meter1K=3)then
=1;
=8;
if(Meter1K>
2)then
endif;
else--heiye
=2;
if(Meter1K>
2)then
process(SEG_SEL)
case(SEG_SEL+1)is
when"
000"
=>
Disp_Temp<
=Meter1K;
001"
010"
=Meter10;
011"
=Meter1;
100"
=10;
101"
=Money100;
110"
=Money10;
111"
endcase;
if(Clk'
)then
SEG_SEL<
=SEG_SEL+1;
if(SEG_SEL=9)thenSEG_SEL<
="
;
Display<
=Disp_Decode;
process(Disp_Temp)
caseDisp_Tempis
when0=>
Disp_Decode<
0111111"
when1=>
0000110"
when2=>
1011011"
when3=>
1001111"
when4=>
1100110"
when5=>
1101101"
when6=>
1111101"
when7=>
0000111"
when8=>
1111111"
when9=>
1101111"
when10=>
1000000"
whenothers=>
0000000"
endone;
2.3.2测速模块
测速模块输入端由Clk及Motor端组成,Clk提供计数脉冲,通过计Motor6秒转的圈数然后乘以10作为一分种出租车的车速,其输出端变由SEL[2..0]及lout7[6..0]组成,前者用于扫描数码管的驱动,后者用于显示转速。
图2.4测速模块
图2.5测速模块仿真图
entityteltclis
Motor:
SEL:
OUTSTD_LOGIC_VECTOR(2DOWNTO0);
lout7:
outstd_logic_vector(6downto0));
endteltcl;
architectureoneofteltclis
signalclk1hz:
std_logic;
--1HZ时钟信号;
signalcount:
std_logic_vector(2downto0);
signalclr1:
std_logic;
signalena1:
signalload1:
signalCQ1,CQ2,CQ3,CQ4:
std_logic_vector(3downto0);
SIGNALCQA:
std_logic_vector(15DOWNTO0);
SIGNALDOUT:
STD_LOGIC_VECTOR(15DOWNTO0);
signals:
std_logic_vector(2downto0);
signallout4:
std_logic_vector(3downto0);
SIGNALin3,in2,in1,in0:
process(clk)
variablecnttemp:
INTEGERRANGE0TO999999;
IFclk='
ANDclk'
eventTHEN
IFcnttemp=999999THENcnttemp:
ELSE
IFcnttemp<
500000THENclk1hz<
='
ELSEclk1hz<
ENDIF;
cnttemp:
=cnttemp+1;
process(Clk1hz)
if(Clk1hz'
eventandClk1hz='
count<
=count+1;
ifcount<
6then
ena1<
load1<
clr1<
elsifcount=6then
load1<
ena1<
elsifcount=7then
PROCESS(CLK,ENA1)IS
BEGIN
IFCLR1='
THENCQ1<
="
0000"
IFENA1='
THEN
if(CQ1="
1001"
CQ1<
if(CQ2=9)then
CQ2<
if(CQ3="
CQ3<
if(CQ4="
CQ4<
=CQ4+1;
=CQ3+1;
=CQ2+1;
=CQ1+1;
ENDIF;
CQA<
=(CQ4&
CQ3&
CQ2&
CQ1);
PROCESS(LOAD1,CQA)IS
BEGIN
IFLOAD1'
EVENTANDLOAD1='
THENDOUT<
=CQA;
ENDPROCESS;
process(clk)
begin
IN3<
=DOUT(15DOWNTO12);
IN2<
=DOUT(11DOWNTO8);
IN1<
=DOUT(7DOWNTO4);
IN0<
=DOUT(3DOWNTO0);
if(clk'
eventandclk='
)then
if(s="
s<
elses<
=s+1;
endif;
sel<
=s;
endprocess;
process(s)
casesis
when"
lout4<
1111"
=in2;
=in1;
=in0;
whenothers=>
XXXX"
caselout4is
lout7<
0001"
0010"
0011"
0100"
0101"
0110"
0111"
1000"
1100111"
1010"
XXXXXXX"
2.3.3报警模块
报警模块输入端由Clk构成,其主要用途在于为蜂呜器提供不同频率,其输出端由spk端构成,其是一个蜂鸣器用于报警。
图2.6蜂鸣器模块
其仿真图如下:
图2.7蜂鸣器模块仿真图
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 课程设计 内容