




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
...wd......wd......wd...XXXXXX學(xué)院題目:基于FPGA的交通燈控制課程設(shè)計學(xué)院:信息工程學(xué)院班級:設(shè)計人:指導(dǎo)教師:設(shè)計時間:2016年6月16日目錄一.摘要............................................1二.概述............................................11.FPGA的應(yīng)用.......................................1三.系統(tǒng)總體設(shè)計....................................21.設(shè)計任務(wù).......................................22.系統(tǒng)設(shè)計流程...................................2四.硬件設(shè)計........................................41.控制模塊.......................................52.時鐘分頻模塊...................................53.分位譯碼模塊...................................54.計數(shù)模塊.......................................6五.實驗程序設(shè)計....................................6六.程序仿真與分析..................................131.仿真結(jié)果.......................................132.仿真結(jié)果分析...................................14七.心得體會........................................14八.參考文獻(xiàn)........................................15九.附錄............................................15一.摘要EDA工具對于電子設(shè)計人員來說極其重要,它可以在電子設(shè)計的各個階段、層次進(jìn)展目前交通燈廣泛應(yīng)用于道路交通建設(shè)中。實現(xiàn)十字路口紅綠燈的自動控制。本文設(shè)計一個十字路口交通燈控制電路,要求東西、南北兩條干道的紅、綠、黃交通燈按要求循環(huán)變化,并以倒計時方式指示干道通行或制止的維持時間。為了對交通燈系統(tǒng)進(jìn)展準(zhǔn)確控制,采用FPGA實驗板,在QuartusⅡ軟件環(huán)境下,分別實現(xiàn)脈沖發(fā)生模塊、狀態(tài)定時模塊、交通燈顯示模塊、時間顯示模塊,進(jìn)展仿真實驗和硬件下載,獲得的測試結(jié)果滿足設(shè)計要求?;贔PGA的交通燈設(shè)計系統(tǒng)具有可靠性強(qiáng)、實時快速擦寫、運(yùn)算速度高、故障率低、電路簡單,且體積小的特點(diǎn)。使用QuartusII軟件作為開發(fā)平臺;采用自頂向下的設(shè)計思路對系統(tǒng)進(jìn)展模塊化設(shè)計和綜合,并通過波形仿真和硬件實現(xiàn)兩種方式實現(xiàn)并驗證交通燈的功能。二.概述FPGA〔Field-Programmable
Gate
Array〕,即現(xiàn)場可編程門陣列,它是在可編程器件的基礎(chǔ)上進(jìn)一步開展的產(chǎn)物。它是作為專用集成電路領(lǐng)域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的缺乏,又抑制了原有可編程器件門電路數(shù)有限的缺點(diǎn)。當(dāng)今社會是數(shù)字化的社會,是數(shù)字集成電路廣泛應(yīng)用的社會。數(shù)字集成電路本身在不斷進(jìn)展更新?lián)Q代,隨著微電子技術(shù)的開展,設(shè)計與制造集成電路的任務(wù)已不完全由半導(dǎo)體廠商來獨(dú)立承擔(dān)。隨著電子技術(shù)的開展,特別是大規(guī)模集成電路和計算機(jī)技術(shù)的研制和開展,讓電子產(chǎn)品設(shè)計有了更好的應(yīng)用市場,實現(xiàn)方法也有了更多的選擇,而電子電路的設(shè)計卻變得越來越復(fù)雜,使用“語言〞進(jìn)展電子設(shè)計已成為一種趨勢?,F(xiàn)代電子系統(tǒng)設(shè)計方法是設(shè)計師自己設(shè)計芯片來實現(xiàn)電子系統(tǒng)的功能,將傳統(tǒng)的固件選用及電路板設(shè)計工作放在芯片設(shè)計中進(jìn)展。在這些專業(yè)化軟件中,EDA(ElectronicDesignAutomation)具有一定的代表性,EDA技術(shù)是一種基于芯片的現(xiàn)代電子系統(tǒng)設(shè)計方法?;贓DA技術(shù)的現(xiàn)場可編程門陣列(FPGA),在數(shù)字系統(tǒng)設(shè)計和控制電路中越來越受到重視。VHDL語言是電子設(shè)計的主流硬件描述語言,它更適合進(jìn)展行為描述,這種方式使得設(shè)計者專注于電路功能的設(shè)計,而不必過多地考慮具體的硬件構(gòu)造?;贓DA技術(shù)的現(xiàn)場可編程門陣列(FPGA)電路,提出現(xiàn)場可編程門陣列(FPGA)是近年來迅速開展的大規(guī)??删幊虒S眉呻娐?ASIC),在數(shù)字系統(tǒng)設(shè)計和控制電路中越來越受到重視。VHDL語言是電子設(shè)計的主流硬件描述語言,它更適合進(jìn)展行為描述,這種方式使得設(shè)計者專注于電路功能的設(shè)計,而不必過多地考慮具體的硬件構(gòu)造。目前以硬件描述語言所完成的電路設(shè)計,可以經(jīng)過簡單的綜合與布局,快速的燒錄至FPGA上進(jìn)展測試,是現(xiàn)代IC設(shè)計驗證的技術(shù)主流。1.FPGA的應(yīng)用FPGA的應(yīng)用可分為三個層面:電路設(shè)計,產(chǎn)品設(shè)計,系統(tǒng)設(shè)計。a.電路設(shè)計連接邏輯,控制邏輯是FPGA早期發(fā)揮作用比較大的領(lǐng)域也是FPGA應(yīng)用的基石。事實上在電路設(shè)計中應(yīng)用FPGA要求開發(fā)者要具備相應(yīng)的硬件知識〔電路知識〕和軟件應(yīng)用能力〔開發(fā)工具〕。b.產(chǎn)品設(shè)計把相對成熟的技術(shù)應(yīng)用到某些特定領(lǐng)域開發(fā)出滿足行業(yè)需要并能被行業(yè)客戶承受的產(chǎn)品。這方面主要是FPGA技術(shù)和專業(yè)技術(shù)的結(jié)合問題,重點(diǎn)在性能,F(xiàn)PGA技術(shù)在這個領(lǐng)域是一個實現(xiàn)手段,F(xiàn)PGA因為具備接口,控制,功能IP,內(nèi)嵌CPU等特點(diǎn)有條件實現(xiàn)一個構(gòu)造簡單,固化程度高,功能全面的系統(tǒng)產(chǎn)品設(shè)計。c.系統(tǒng)級的應(yīng)用系統(tǒng)級的應(yīng)用是FPGA與傳統(tǒng)的計算機(jī)技術(shù)結(jié)合,實現(xiàn)一種FPGA版的計算機(jī)系統(tǒng)如用XilinxV-4,V-5系列的FPGA,實現(xiàn)內(nèi)嵌POWERPCCPU,然后再配合各種外圍功能,這個平臺上跑LINIX等系統(tǒng)這個系統(tǒng)也就支持各種標(biāo)準(zhǔn)外設(shè)和功能接口了,這對于快速構(gòu)成FPGA大型系統(tǒng)來講是很有幫助的。三.系統(tǒng)總體設(shè)計1.設(shè)計任務(wù)設(shè)計一個十字路口交通控制器,方向分為東南西北四個方向。東西方向的紅綠燈狀態(tài)一樣,南北方向的紅綠燈狀態(tài)一樣。每個方向上,有四盞燈,分別是左轉(zhuǎn)燈、紅燈、綠燈和黃燈。左拐燈亮表示左轉(zhuǎn)車輛可以通行;紅燈亮表示左轉(zhuǎn)和直行車輛禁行;綠燈亮表示直行車輛和右轉(zhuǎn)的車輛可以通行;黃燈亮表示左轉(zhuǎn)和直行的車輛即將禁行;倒計時顯示器用來顯示允許通行或制止通行的時間倒計時。2.系統(tǒng)設(shè)計流程提出系統(tǒng)設(shè)計要求提出系統(tǒng)設(shè)計要求需求分析需求分析模塊化方案設(shè)計模塊化方案設(shè)計底層電路設(shè)計---模塊方案設(shè)計底層電路設(shè)計---模塊方案設(shè)計頂層電路設(shè)計---原理圖描述+各模塊連接頂層電路設(shè)計---原理圖描述+各模塊連接功能仿真FPGA整體方案編譯仿真FPGA整體方案設(shè)計完成硬件連接和運(yùn)行時序仿真FPGA整體方案設(shè)計實現(xiàn)功能仿真FPGA整體方案編譯仿真FPGA整體方案設(shè)計完成硬件連接和運(yùn)行時序仿真FPGA整體方案設(shè)計實現(xiàn)系統(tǒng)分析通過分析可以知道,所要設(shè)計的十字路口交通燈控制電路要能夠使南北、東西各四個燈〔紅、黃、綠、左轉(zhuǎn)〕,四個燈能夠按順序依次亮滅。而且要求綠燈亮轉(zhuǎn)紅燈亮或者轉(zhuǎn)左轉(zhuǎn)燈亮之前要先轉(zhuǎn)黃燈亮5秒,左轉(zhuǎn)燈亮轉(zhuǎn)紅燈亮之前也要先轉(zhuǎn)黃燈亮5秒,紅燈亮可以直接轉(zhuǎn)綠燈或左轉(zhuǎn)燈亮〔四種燈的循環(huán)順序如圖2-1所示〕。還要求四種燈的點(diǎn)亮?xí)r間能夠以倒計時的形式顯示出來??梢杂肰HDL語言合理設(shè)計系統(tǒng)功能,使紅黃綠左轉(zhuǎn)燈的轉(zhuǎn)換有一個準(zhǔn)確的時間間隔和轉(zhuǎn)換順序。經(jīng)分析,系統(tǒng)的總體構(gòu)造可以描述下述的方框圖:Hold倒計時數(shù)字及‘閃爍控制信號’七段數(shù)碼管七段數(shù)碼管驅(qū)動電路Reset分頻電路分位譯碼電路紅、黃、綠發(fā)光二極管控制器計數(shù)器Hold倒計時數(shù)字及‘閃爍控制信號’七段數(shù)碼管七段數(shù)碼管驅(qū)動電路Reset分頻電路分位譯碼電路紅、黃、綠發(fā)光二極管控制器計數(shù)器在FPGA設(shè)計描述中,采用自頂向下的設(shè)計思路,該思路,首先要描述頂層的接口,上面的描述已經(jīng)規(guī)定了交通燈控制的輸入輸出信號:輸入信號:復(fù)位開關(guān)信號reset;外部時鐘信號clk。LED七段顯示數(shù)碼管的輸出信號count1(6
downto
0),count2(6
downto
0),count3(6
downto
0),count4(6
downto
0);在自頂向下的VHDL設(shè)計描述中,通常把整個設(shè)計的系統(tǒng)劃分為幾個模塊,然后采用構(gòu)造描述方式對整個系統(tǒng)進(jìn)展描述。根據(jù)實驗設(shè)計的構(gòu)造功能,來確定使用哪些模塊以及這些模塊之間的關(guān)系。通過上面的分析,不難得知可以把交通燈控制系統(tǒng)劃分為4個模塊:時鐘分頻模塊,計數(shù)模塊,控制模塊,分位譯碼模塊。時鐘分頻模塊:把555多諧振蕩器發(fā)出的較高頻率脈沖用分頻電路的到較第頻率的時鐘信號,本電路通過三次10分平分別得到10Hz、1Hz的時鐘信號。
控制器電路:根據(jù)計數(shù)器的計數(shù)值控制發(fā)光二極管的亮、滅,以及輸出倒計時數(shù)值給七段譯碼管的分位譯碼電路。當(dāng)檢測到手動控制信號〔Con=’1’〕時,執(zhí)行手動控制;
計數(shù)器電路:這里需要的計數(shù)器的計數(shù)范圍為0~89。計到89后,下一個時鐘沿升為1時,開場下一輪計數(shù),此外當(dāng)系統(tǒng)復(fù)位信號〔Reset=’1’〕使計數(shù)器異步清‘0’。手動信號〔Con=’1’〕使系統(tǒng)清‘0’。
分位譯碼電路:因為控制器輸出的倒計時數(shù)值可能是1位或者2位十進(jìn)制數(shù),所以在七段數(shù)碼管的譯碼電路前要加上分位電路〔即將其分為2個1位的十進(jìn)制數(shù),如20分為2和0,7分為0和7〕。七段數(shù)碼管的譯碼電路根據(jù)控制電路的控制信號,驅(qū)動交通燈的顯示,通過輸入二進(jìn)制數(shù)值,輸出信號點(diǎn)亮二極管,我們用的是共陽極數(shù)碼管,因此譯碼電路輸出邏輯數(shù)值‘0’點(diǎn)亮二極管,譯碼電路輸出邏輯數(shù)值‘1’熄滅二極管。四.硬件設(shè)計1.控制模塊控制模塊的作用是根據(jù)計數(shù)器的數(shù)值控制發(fā)光二極管的亮、滅,以及輸出倒計時數(shù)值給七段數(shù)碼管的分位譯碼電路。此外,當(dāng)檢測到特殊情況〔EMI=‘1’〕發(fā)生時,無條件點(diǎn)亮紅燈的二極管〔急救燈按下EMI='1',則東西南北都亮紅燈,在這種狀態(tài)下原來的狀態(tài)必須保持,即東西南北方向定時時間保持不變。急救燈未按下或者按下后恢復(fù),則繼續(xù)計時〔計時通過計數(shù)器ct〕,同時恢復(fù)東西南北原來燈的狀態(tài)〕。2.時鐘分頻模塊分頻器實現(xiàn)的是將高頻時鐘信號轉(zhuǎn)換成低頻時鐘信號,用于觸發(fā)控制器、計數(shù)器和掃描顯示電路。將頻率變?yōu)?Hz的脈沖波,從而得到周期為1s的脈沖波。3.分位譯碼模塊〔1〕因為控制輸出的倒計時數(shù)值可能是1位或2位十進(jìn)制數(shù),所以七段數(shù)碼管的譯碼電路前要加上分位電路〔即將其分為兩個1位的十進(jìn)制數(shù),如25分為2和5〕?!?〕分位模塊輸出的計數(shù)值將十位數(shù)和個位數(shù)分別存到數(shù)組里,這樣就可以得到兩個路口倒計時時間顯示的十位和個位信號。4.計數(shù)模塊實現(xiàn)計數(shù)為0-80計數(shù),計數(shù)到80后,下一個時鐘沿回復(fù)到0,開場下一計數(shù)。此外當(dāng)檢測到特殊情況〔hold=“1〞〕發(fā)生時,計數(shù)器暫停計數(shù),無條件點(diǎn)亮紅色的發(fā)光二極管。而系統(tǒng)復(fù)位信號Reset則使計數(shù)器異步清零。五.實驗程序設(shè)計1.頂層模塊library
ieee;
use
ieee.std_logic_1164.all;
use
ieee.std_logic_unsigned.all;
entity
dingceng
is
port(clkd,resetd,cond,con1d:in
std_logic;
count1:out
std_logic_vector(6
downto
0);—七段數(shù)碼管顯示
count2:out
std_logic_vector(6
downto
0);—七段數(shù)碼管顯示
count3:out
std_logic_vector(6
downto
0);—七段數(shù)碼管顯示
count4:out
std_logic_vector(6
downto
0);—七段數(shù)碼管顯示
reda,yellowa,greena,lifta:outstd_logic;—a發(fā)光二極管輸出
redb,yellowb,greenb,liftb:outstd_logic);—b發(fā)光二極管輸出
end
entity
dingceng;
architecture
one
of
dingceng
is
2.實體定義componentclk_10—脈沖輸入port(clk:in
std_logic;)--時鐘頻率為250KHz.
clk_div10
:
out
std_logic);--十分頻后脈沖輸出
end
component;
component
counter3.計數(shù)模塊port
(clk0:in
std_logic;)--脈沖信號輸入
con:in
std_logic;--手動控制信號
reset:in
std_logic;--復(fù)位信號
countnum:bufferinteger
range
0to89);--0-89計數(shù)輸出。
end
component;
a4.控制模塊component
controller
port
(
clk1
:
in
std_logic;〕--脈沖信號輸入
con1
:
in
std_logic;--手動控制信號
con2:
in
std_logic;--狀態(tài)控制信號countnum
:
in
integer
range
0
to
89–0-89計數(shù)輸入;
numa,numb
:
out
integer
range
0
to
25;--東西、南北兩個方向的倒計時數(shù)值輸出
ra,ga,ya,la:
out
std_logic〕;--ra,ga,ya,la發(fā)光二極管輸出
rb,gb,yb,lb:
out
std_logic);--rb,gb,yb,lb發(fā)光二極管輸出
end
component;
a5.分位模塊component
fenwei
port
(
numin:in
integer
range
0
to
25;--倒計時數(shù)值輸入
numa,numb:out
integer
range
0
to
9
);--將數(shù)值分為2個1位的十進(jìn)制輸出
end
component;
component
yima
port(clk2:in
std_logic;
bb:
in
integer
range
0
to
9;
ya:out
std_logic;--BCD碼輸出
yb:out
std_logic;--BCD碼輸出
yc:out
std_logic;--BCD碼輸出
yd:out
std_logic;--BCD碼輸出
ye:out
std_logic;--BCD碼輸出
yf:out
std_logic;--BCD碼輸出
yg:out
std_logic);--BCD碼輸出
end
component;
signal
a,b,c,d:std_logic;
signal
ww:integer
range
0
to
89;
signal
yy1,yy2:integer
range
0
to
25;
signal
tt1,tt2,tt3,tt4:integer
range
0
to
9;
begin
u0:
clk_10
port
map(clk=>clkd,clk_div10=>a);
u1:
clk_10
port
map(clk=>clkd,clk_div10=>b);
u2:
clk_10
port
map(clk=>b,clk_div10=>c);
u3:counter
port
map(clk0=>c,con=>cond,reset=>resetd,countnum=>ww);
u4:controller
port
map
(clk1=>c,con1=>cond,con2=>con1d,countnum=>ww,numa=>yy1,numb=>yy2,ra=>reda,ga=>greena,ya=>yellowa,ga1=>greena1,rb=>redb,gb=>greenb,yb=>yellowb,gb1=>greenb1);
u5:fenwei
port
map(numin=>yy1,numa=>tt1,numb=>tt2);
u6:fenwei
port
map
(numin=>yy2,numa=>tt3,numb=>tt4);
u7:yima
port
map(clk2=>b,bb=>tt1,ya=>count1(0),yb=>count1(1),yc=>count1(2),yd=>count1(3),ye=>count1(4),yf=>count1(5),yg=>count1(6));
u8:yima
),yf=>count2(5),yg=>count2(6));
u9:yima
3(4),yf=>count3(5),yg=>count3(6));
u10:yima
4(4),yf=>count4(5),yg=>count4(6));
end
architecture
one;b1.實體定義library
ieee;
use
ieee.std_logic_1164.all;
use
ieee.std_logic_arith.all;
use
ieee.std_logic_unsigned.all;
entity
clk_10
is--脈沖輸入
port(
clk
:
in
std_logic;--時鐘頻率為250KHz
clk_div10
:
out
std_logic);--十分頻后脈沖輸出
end
clk_10;--脈沖輸出
architecture
one
of
clk_10
is
signal
clk_temp
:
std_logic;
begin
process(clk)
variable
counter
:
std_logic_vector(2
downto
0);
constant
md
:
std_logic_vector(2
downto
0)
:=
"101";
begin
if(clk'event
and
clk='1')
then
if(counter
=
md)then
counter
:=
(others
=>'0');
clk_temp
<=
not
clk_temp;
end
if;
counter
:=
counter
+
1
;
end
if;
end
process;
port
map(clk2=>b,bb=>tt4,ya=>count4(0),yb=>count4(1),yc=>count4(2),yd=>count4(3),ye=>countport
map(clk2=>b,bb=>tt3,ya=>count3(0),yb=>count3(1),yc=>count3(2),yd=>count3(3),ye=>countport
map
(clk2=>b,bb=>tt2,ya=>count2(0),yb=>count2(1),yc=>count2(2),yd=>count2(3),ye=>count2(4)clk_div10
<=
clk_temp;
end
one;b2.計數(shù)模塊
library
ieee;
use
ieee.std_logic_1164.all;
entity
counter
is
port
(
clk0:in
std_logic;)--脈沖信號輸入
con:in
std_logic;--手動控制信號
reset:in
std_logic;--復(fù)位信號
countnum:buffer
integer
range
0
to
89);--復(fù)位信號
end
counter;
architecture
one
of
counter
is
begin
process
(reset,clk0)
begin
if
reset='1'
then
countnum
<=
0;
elsif
rising_edge(
clk0
)
then
if
con='1'
then
countnum
<=
0;
else
if
countnum=89
then
countnum
<=
0;
else
countnum
<=
countnum
+
1;
end
if;
end
if;
end
if;
end
process;
end
one;b3.控制模塊library
ieee;
use
ieee.std_logic_1164.all;
use
ieee.std_logic_unsigned.all;
entity
controller
is
port
(
clk1
:
in
std_logic;〕--脈沖信號輸入
con1
:
in
std_logic;--手動控制信號
con2:
in
std_logic;--狀態(tài)控制信號countnum
:
in
integer
range
0
to
89–0-89計數(shù)輸入;
numa,numb
:
out
integer
range
0
to
25;--東西、南北兩個方向的倒計時數(shù)值輸出
ra,ga,ya,la:
out
std_logic〕;--ra,ga,ya,la發(fā)光二極管輸出
rb,gb,yb,lb:
out
std_logic);--rb,gb,yb,lb發(fā)光二極管輸出
end
component;
end
controller;
architecture
one
of
controller
is
signal
m
:
integer
range
0
to
7;
begin
process
(
clk1,con1,con2,countnum
)
variable
aa:std_logic_vector(7
downto
0);
begin
if
(clk1'event
and
clk1
=
'1'
)then
if
con1
='0'
then
if
countnum
>=
65then
numb<=90-countnum;
numa
<=90-countnum;
if
countnum
>=
70
then
aa
:=
"00011000";
else
aa
:=
"00101000";
numa<=
70-countnum;
end
if;
elsif
countnum
>=
45
then
numb
<=
65-countnum;
numa
<=65-countnum;
if
countnum
>=
50
then
aa
:=
"10000100";
else
aa
:=
"10000010";
numb<=
50-countnum;
end
if;
elseif
countnum
>=
20
then
numa
<=
45-countnum;
numb
<=45-countnum;
if
countnum
>=
25
then
aa
:=
"01001000";
else
aa
:=
"00101000";
numa
<=
25-countnum;
end
if;
elsif
countnum
>=
0
then
numa
<=
20-countnum;
numb
<=
20-countnum;
if
countnum
>=
5
then
aa
:=
"10000100";
else
aa
:=
"10000010";
numb
<=
5-countnum;
end
if;
end
if;
else
if
con1=
'1'
the
numa
<=
0;
numb
<=
0;
if
con2
=
'1'
then
if
m
=
7
then
m
<=
0;
else
m
<=
m
+
1;
end
if;
end
if;
if
m
=
0
then
aa
:=
"01001000";
elsif
m=
1
then
aa
:=
"00101000";
elsif
m=2
then
aa
:="10000100";
elsif
m=3
then
aa
:=
"10000010";
elsif
m=4
then
aa
:=
"00011000";
elsif
m=5
then
aa
:=
"00101000";
elsif
m=6
then
aa
:=
"10000001";
elsif
m=7
then
aa
:=
"10000010";
end
if;end
if;end
if;end
if;ra
<=
aa(7);ga<=
aa(6);ya<=
aa(5);
ga1<=aa(4);
rb<=aa(3);gb<=aa(2);yb<=aa(1);
gb1<=aa(0);
endprocess;endone;
b4.分位模塊libraryieee;
use
ieee.std_logic_1164.all;
entity
fenwei
is
port
(
numin:in
integer
range
0
to
25;--倒計時數(shù)值輸入
numa,numb:out
integer
range
0
to
9
);--將數(shù)值分為2個1位的十進(jìn)制輸出end
fenwei;--倒計時輸出
architecture
one
of
fenwei
is
begin
process(
numin
)
variable
numa1,numb1:
integer
range
0
to
9;
begin
if
numin
>=
20
then
numa1
:=2;
numb1
:=
numin
-
20;
elsif
numin
>=
10
then
numa1
:=
1;
numb1
:=
numin
-
10;
else
numa1
:=
0
;
numb1
:=
numin
;
end
if
;
numa
<=
numa1;
numb
<=
numb1;
end
process
;
end
one
;
bb[3..0]--BCD碼輸入clk2—脈沖輸入
ya,yb,yc,yd,ye,yf,yg—七段數(shù)碼管顯示輸出5.譯碼模塊library
ieee;
use
ieee.std_logic_1164.all;
entity
display
is
port(
clk2:in
std_logic;
bb:
in
std_logic_vector(3
downto
0);--BCD碼輸入ya:out
std_logic;--七段數(shù)碼管顯示輸出
yb:out
std_logic;--七段數(shù)碼管顯示輸出yc:out
std_logic;--七段數(shù)碼管顯示輸出yd:out
std_logic;--七段數(shù)碼管顯示輸出
ye:out
std_logic;--七段數(shù)碼管顯示輸出
yf:out
std_logic;--七段數(shù)碼管顯示輸出yg:out
std_logic);--七段數(shù)碼管顯示輸出end
display;
architecture
one
of
display
issignal
temp:
std_logic_vector(6
downto
0);
--BCD碼輸入begin
process(bb)
begin
case
bb
is
when
"0000"
=>
temp
<=
"1000000";
when
"0001"
=>
temp
<=
"1111001";
when
"0010"
=>
temp
<=
"0100100";
when
"0011"
=>
temp
<=
"0110000";
when
"0100"
=>
temp
<=
"0011001";
when
"0101"
=>
temp
<=
"0010010";
when
"0110"
=>
temp
<=
"0000010";
when
"0111"
=>
temp
<=
"1011000";
when
"1000"
=>
temp
<=
"0000000";
when
"1001"
=>
temp
<=
"0010000";when
others
=>
temp
<=
"1111111";
end
case;
end
process;ya<=temp(0);
yb<=temp(1);
yc<=temp(2);
yd<=temp(3);
ye<=temp(4);
yf<=temp(5);
yg<=temp(6);
end
one;六.程序仿真與分析1仿真結(jié)果利用QUARTUSⅡ軟件對本程序進(jìn)展編譯,生成了可以進(jìn)展仿真定時分析以及下載到可編程器件的相關(guān)文件。仿真結(jié)果如下列圖:2仿真結(jié)果分析通過設(shè)定clk值以及start和EMI的初值,就可以得到仿真波形圖。EMI高電平信號輸入時,所有交通燈都變成紅
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度證件外借風(fēng)險評估與管理合同
- 洗衣店裝修簡易協(xié)議
- 二零二五年度商場家居用品柜臺租賃管理合同
- 2025年度建筑工程施工環(huán)境保護(hù)責(zé)任協(xié)議書
- 2025年度供應(yīng)鏈物流保密協(xié)議合同
- 文化產(chǎn)業(yè)借款融資居間合同
- 2025年度農(nóng)村土地承包經(jīng)營權(quán)流轉(zhuǎn)及農(nóng)業(yè)產(chǎn)業(yè)結(jié)構(gòu)調(diào)整合作合同
- 2025年度企業(yè)兼職市場營銷人員勞務(wù)合同模板
- 2025年度房產(chǎn)贈與資產(chǎn)重組合同
- 2025年度人工智能系統(tǒng)維護(hù)與數(shù)據(jù)安全合同
- 2024屆南通二模(又蘇北七市二模)數(shù)學(xué)試題
- 菜點(diǎn)與酒水知識課件
- 新修訂《中小學(xué)教師職業(yè)道德規(guī)范》解讀
- 品質(zhì)月工作總結(jié)
- 江西省南昌市2024屆高三一模語文試題及答案解析
- 第一章村集體經(jīng)濟(jì)組織會計制度講解
- 2024年濟(jì)南護(hù)理職業(yè)學(xué)院高職單招(英語/數(shù)學(xué)/語文)筆試歷年參考題庫含答案解析
- -藝術(shù)博覽會與藝術(shù)品拍賣
- 2024年貴州水投水務(wù)集團(tuán)有限公司招聘筆試參考題庫含答案解析
- (完整版)ERP流程及操作手冊
- 接上童氣:小學(xué)《道德與法治》統(tǒng)編教材研究
評論
0/150
提交評論