【正文】
各個(gè)模塊仿真成功之后,我開始編寫頂層文件。在編寫頂層文件時(shí)我也遇到了不少困難,各個(gè)模塊的連接以及信號(hào)的定義老是出現(xiàn)錯(cuò)誤,經(jīng)過反復(fù)修改才成功。 本設(shè)計(jì)基于VHDL硬件描述語言編程,在確立總體預(yù)期控制功能的前提下,分模塊進(jìn)行描述,其中所用到的數(shù)據(jù)均可依實(shí)際情況而設(shè)置,修改方便靈活。目標(biāo)器件為FPGA芯片,運(yùn)用層次化設(shè)計(jì)方法,完成各個(gè)模塊的連接,實(shí)現(xiàn)了十字路口車輛的自動(dòng)控制。VHDL程序在Quartus II環(huán)境下編譯通過,功能仿真正確,將編程文件下載到FPGA芯片后實(shí)現(xiàn)了自動(dòng)控制功能。本設(shè)計(jì)具有設(shè)計(jì)過程簡化,設(shè)計(jì)周期短,工作穩(wěn)定、性能可靠等優(yōu)點(diǎn),打破了傳統(tǒng)的自下而上的設(shè)計(jì)方法,體現(xiàn)了基于FPGA技術(shù)和VHDL語言進(jìn)行數(shù)字系統(tǒng)設(shè)計(jì)的優(yōu)越性和廣闊的前景。城市交通路口情況較為復(fù)雜,除十字路口之外,還有“T”型路口和圓形路口等類型的路口,本文僅簡單分析了十字路口。且由于實(shí)驗(yàn)板上的LED數(shù)碼管和邏輯狀態(tài)指示管數(shù)目有限,在設(shè)計(jì)十字路口交通燈控制器時(shí),沒有考慮左拐彎功能。該功能可通過在十字路口的每個(gè)方向各放置一個(gè)左拐信號(hào)燈和一組LED數(shù)碼管(2個(gè))來實(shí)現(xiàn)。 參考文獻(xiàn)[1] 易銘.PLC控制的交通信號(hào)燈控制系統(tǒng)的設(shè)計(jì)[J].工業(yè)控制計(jì)算機(jī),2003,16(12):43—45.[2] 劉煥成,劉智勇.多單片機(jī)系統(tǒng)及分組式交通信號(hào)燈控制器[J].電子技術(shù),2003(8):15一19.[3] 蔣璇,[M]. 北京:電子電子工業(yè)出版社,2001[4] 徐志軍,王金明,[M]. 北京:電子工業(yè)出版社,2009:19.趙艷華,曹丙霞,張睿.基于Quartus II的FPGA/CPLD設(shè)計(jì)與應(yīng)用. 北京:電子工業(yè)出版社,2009:30—58.[5] 侯伯亨.VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計(jì)[M].西安:西安電子技大學(xué)出版社,1999:42—77.[6] 邢建平,.3版.北京:清華大學(xué)出版社,2005:45—46.[7] 徐春嬌.基于VHDL狀態(tài)機(jī)設(shè)計(jì)的智能交通控制燈[J].國外電子元器2007(2):31—35.[8] 張順興.?dāng)?shù)字電路與系統(tǒng)設(shè)計(jì)[M].南京:東南大學(xué)出版社,2004:30—45.[9] 楊暉,張風(fēng)言.大規(guī)??删幊踢壿嬈骷c數(shù)字系統(tǒng)設(shè)計(jì)[M].北京:北京航空航天大學(xué)出版社,1998:173—188.[10] 蔡軍,曹慧英.智能交通燈控制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].重慶:郵電學(xué)院學(xué)報(bào),2004,16(3):129—132.[11] 田瑞利,陳海濱.基于VHDL有限狀態(tài)機(jī)的交通信號(hào)燈控制系統(tǒng)設(shè)計(jì)[J].廣州航海高等??茖W(xué)校學(xué)報(bào),2008,15(3)31—33.[12] 劉欲曉,方強(qiáng),黃宛寧等.EDA技術(shù)與VHDL電路開發(fā)應(yīng)用實(shí)踐[M].北京:電子電子工業(yè)出版社,2009:127—131.[13] 曹昕燕,周鳳臣,[M].北京:清華大學(xué)出版社,2006:108—115. [M].長沙:湖南大學(xué)出版社,2004:113—116.[14] Altera Corporation. 2002. Altera Digital Library. Altera. Mark Zwolinski. Digital System Design with VHDL [M]. 北京:電子工業(yè)出版社,2002:11—18.附錄:ibrary ieee。use 。use 。entity count5 is port( clk : in std_logic。 enable: in std_logic。 c : out std_logic。 q :out std_logic_vector(2 downto 0))。end count5。architecture a of count5 is signal fp:std_logic_vector(24 downto 0)。 signal f:std_logic。 signal data: std_logic_vector(2 downto 0):=101。 begin process(clk) begin if(clk39。event and clk=39。139。) then if fp=1011111010111100001000000 then fp=0000000000000000000000000。 f=not f。 else fp=fp+1。 end if。 end if。 end process。 process(f) begin if(f39。event and f=39。139。) then if enable=39。139。 and data0 then data=data1。 else data=101。 end if。 end if。 if data=0 then c=39。139。 else c=39。039。 end if。 end process。 q=data。 end a。