當前位置:編程學習大全網 - 源碼下載 - EDA的紅綠燈實驗怎麽做?硬件需要什麽?有人有模型嗎?告訴我,謝謝。

EDA的紅綠燈實驗怎麽做?硬件需要什麽?有人有模型嗎?告訴我,謝謝。

交通燈控制器

實驗的目的

1.了解燈的開關規則。

2.了解交通燈控制器的工作原理。

3.熟悉VHDL編程,了解實際設計中的優化方案。

第二,硬件要求

1.EDA/SOPC實驗箱。

三個實驗原則

紅綠燈的顯示方式有很多種,比如十字路口、丁字路口,同壹路口有很多不同的顯示要求。比如在十字路口,汽車從東西方向和南北方向通過是很簡單的,但是如果汽車可以左右轉彎就比較復雜了。這個實驗只是針對最簡單的從北到南,從東到西直行的情況。

要完成這個實驗,首先要了解交通路燈的點亮和熄滅規律。在這個實驗中,我們需要使用實驗箱上的交通燈模塊中的發光二極管,即三個紅色、三個黃色和三個綠色。按照人們的交通常規,“紅燈停,綠燈行,黃燈提醒”。紅綠燈的熄燈規律是:初始狀態是兩個路口紅燈全亮,然後東西路口綠燈亮,南北路口紅燈亮,東西方向通行。延遲壹段時間後,東西交叉路口的綠燈熄滅,黃燈開始閃爍。閃幾次後,東西路口紅燈亮,南北路口綠燈亮,南北方向開始通車。延時壹段時間後,南北路口綠燈熄滅,黃燈開始閃爍。閃爍幾次後,切換到東西向路口,重復上述過程。

實驗中,用八個七段碼管中的任意兩個數碼管來顯示時間。東西路、南北路開放時間設置為20s。數碼管的時間總是顯示為19,18,17...2, 1, 0, 19, 18.當顯示時間少於3秒時,交通方向的黃燈閃爍。

四個實驗內容

本實驗的任務是設計壹個簡單的交通燈控制器,交通燈顯示由實驗箱中的交通燈模塊和七段碼管中的任意兩個顯示。系統時鐘選擇時鐘模塊的1KHz時鐘,黃燈閃爍時鐘要求為2Hz,七段碼管時間顯示為1Hz脈沖,即每1s遞減壹次。當顯示時間小於3秒時,開啟方向的黃燈以2Hz的頻率閃爍。在系統中,使用S1鍵進行復位。

五個實驗步驟

完成交通燈控制器的實驗步驟如下:

1.首先,打開Quartus II軟件,構建壹個新項目,創建壹個新的VHDL文件。

2.按照自己的想法寫VHDL程序。

3.編譯和模擬VHDL程序。

4.仿真無誤後,根據附錄1中的管腳對照表,對實驗中用到的時鐘、七段碼顯示、紅綠燈模塊的LED對應的FPGA管腳進行管腳綁定,然後重新編譯。

5.用下載線通過JTAG接口將相應的sof文件下載到FPGA中。

6.觀察交通燈控制器是否符合實驗要求。

====================================

源代碼如下

====================================

圖書館ieee

使用IEEE . STD _ logic _ 1164 . all;

使用IEEE . STD _ logic _ arith . all;

使用IEEE . STD _ logic _ unsigned . all;

-

實體exp18是

port(Clk:in STD _ logic;-時鐘輸入

Rst:在std_logic中;-重置輸入

R1,R2:out STD _ logic;-紅光輸出

Y1,Y2:out STD _ logic;-黃光輸出

G1,G2:out STD _ logic;-綠光輸出

顯示:out STD _ logic _ vector(7 down to 0);-七位碼管顯示輸出。

seg _ sel:BufferSTD _ Logic _ Vector(2 downto 0)-七段碼管掃描驅動

);

end exp 18;

-

exp18的建築表現為

信號Disp_Temp:整數範圍0到15;

信號Disp _ Decode:STD _ logic _ vector(7 down to 0);

信號SEC1,SEC10:整數範圍0到9;

信號方向:整數範圍0到15;

信號Clk _ count 1:STD _ logic _ vector(9 down to 0);-產生0.5Hz時鐘的分頻器。

信號clk 1Hz:STD _ logic;

信號Dir _ Flag:STD _ logic;-方向標誌

開始

進程(時鐘)

開始

if(Clk'event and Clk='1 ')則

if(Clk _ count 1 & lt;1000)

clk _ count 1 & lt;= Clk _ count 1+1;

其他

clk _ count 1 & lt;="0000000001";

結束if;

結束if;

結束進程;

clk 1Hz & lt;= Clk _ count 1(9);

過程(時鐘1Hz,Rst)

開始

如果(Rst='0 ')那麽

sec 1 & lt;=0;

sec 10 & lt;=2;

Dir _ Flag & lt='0';

elsif(Clk1Hz '事件和Clk1Hz='1 ')然後

if(SEC1=0)則

sec 1 & lt;=9;

if(SEC10=0)則

sec 10 & lt;=1;

其他

sec 10 & lt;= sec 10-1;

結束if;

其他

sec 1 & lt;= sec 1-1;

結束if;

如果(SEC1=0且SEC10=0 ),則

Dir _ Flag & lt= not Dir _ Flag

結束if;

結束if;

結束進程;

過程(時鐘1Hz,Rst)

開始

如果(Rst='0 ')那麽

r 1 & lt;='1';

g 1 & lt;='0';

R2<='1';

G2 & lt='0';

否則-正常操作

if(sec 10 & gt;0或sec 1 & gt;3)然後

If (dir _ flag =' 0 ')則-橫向流量

r 1 & lt;='0';

g 1 & lt;='1';

R2<='1';

G2 & lt='0';

其他

r 1 & lt;='1';

g 1 & lt;='0';

R2<='0';

G2 & lt='1';

結束if;

其他

If (dir _ flag =' 0 ')則-橫向流量

r 1 & lt;='0';

g 1 & lt;='0';

R2<='1';

G2 & lt='0';

其他

r 1 & lt;='1';

g 1 & lt;='0';

R2<='0';

G2 & lt='0';

結束if;

結束if;

結束if;

結束進程;

過程(時鐘1Hz)

開始

if(sec 10 & gt;0或sec 1 & gt;3)然後

y 1 & lt;='0';

Y2 & lt='0';

elsif(Dir_Flag='0 ')然後

y 1 & lt;= clk 1Hz;

Y2 & lt='0';

其他

y 1 & lt;='0';

Y2 & lt= clk 1Hz;

結束if;

結束進程;

進程(目錄標誌)

開始

If (dir _ flag =' 0 ')則-水平

方向& lt=10;

否則-垂直

方向& lt=11;

結束if;

結束進程;

進程(分段_選擇)

開始

案例(SEG_SEL+1)為

當“000”= >Disp_Temp<=方向;

當" 001"= >時;Disp_Temp<=方向;

當" 010"= >時;Disp_Temp<= sec 10;

當" 011"= >Disp_Temp<= sec 1;

當" 100"= >Disp_Temp<=方向;

當" 101"= >Disp_Temp<=方向;

當" 110"= >Disp_Temp<= sec 10;

當" 111"= >Disp_Temp<= sec 1;

結束案例;

結束進程;

進程(時鐘)

開始

if(clk ' event and clk = ' 1 ')then-掃描累加。

SEG _ SEL & lt= SEG _ SEL+1;

顯示& lt= Disp _ Decode

結束if;

結束進程;

process(disp _ temp)-顯示轉換。

開始

案例顯示溫度為

當0= >時;Disp _ Decode & lt="00111111";- '0'

當1= >Disp _ Decode & lt="00000110";- '1'

當2= >時;Disp _ Decode & lt="01011011";- '2'

當3= >時;Disp _ Decode & lt="01001111";- '3'

當4= >時;Disp _ Decode & lt="01100110";- '4'

當5= >時;Disp _ Decode & lt="01101101";- '5'

當6= >時;Disp _ Decode & lt="01111101";- '6'

當7= >時;Disp _ Decode & lt="00000111";- '7'

當8= >時;Disp _ Decode & lt="01111111";- '8'

當9= >時;Disp _ Decode & lt="01101111";- '9'

當10= >Disp _ Decode & lt="01001000";- '='

當11= >Disp _ Decode & lt="00010100";- '||'

當別人= & gtDisp _ Decode & lt="00000000";-完全滅絕

結束案例;

結束進程;

結束行為;

==================================================

註意:根據不同的硬件對程序做適當的調整。

  • 上一篇:叉叉助手停運有什麽替代的
  • 下一篇:Java學習路線應該如何安排?
  • copyright 2024編程學習大全網