【正文】
n 1= data=b_ten。scan=001。 when 2= data=a_one。scan=100。 when 3= data=a_ten。scan=101。 when others=null。end case。end process。 七段譯碼process(data)begincase data is when0000=seg7=11111100。 when0001=seg7=01100000。 when0010=seg7=11011010。 when0011=seg7=11110010。 when0100=seg7=01100110。 when0101=seg7=10110110。 when0110=seg7=10111110。 when0111=seg7=11100000。 when1000=seg7=11111110。 when1001=seg7=11110110。 when others=seg7=10011110。end case。end process。end。end。項(xiàng)目組成員分工賈彬編程賈彬調(diào)試賈彬在功能板上實(shí)現(xiàn)程序項(xiàng)目實(shí)施過程中遇到的困難程序讀不懂,沒有理解那一個(gè)是A和B,沒有看清楚程序。在實(shí)現(xiàn)功能后發(fā)現(xiàn)A發(fā)球是15,B接球是2.如果B接到則B得分,反之。B發(fā)球是1,A接球是16. 如果A接到則A得分,反之。解決問題的過程及方法將理論與實(shí)際的試驗(yàn)箱相結(jié)合。總結(jié)與反思通過這個(gè)項(xiàng)目的實(shí)訓(xùn),得出有些事你不一定會(huì),但只要你自己努力的學(xué)習(xí),不斷地嘗試,細(xì)心,認(rèn)真思考就會(huì)得到意想不到的結(jié)果。編號(hào)(0010)項(xiàng)目名稱交通燈項(xiàng)目組成員賈彬 李丹 路清云項(xiàng)目內(nèi)容library ieee。use 。use 。entity cpld isport(clk:in std_logic。6mhz晶振時(shí)鐘 jin:in std_logic。禁止通行信號(hào) scan:out std_logic_vector(2 downto 0)。數(shù)碼管地址選擇信號(hào) seg7:out std_logic_vector(7 downto 0)。7段顯示控制信號(hào)(abcdefg) ra,ya,ga:out std_logic。主干道的紅黃綠燈 rb,yb,gb:out std_logic)。支干道的紅黃綠燈end。architecture one of cpld is type states is(st1,st2,st3,st4)。四種狀態(tài) signal clk1khz,clk1hz:std_logic。分頻信號(hào)包括1khz和1hz signal one,ten:std_logic_vector(3 downto 0)。倒計(jì)時(shí)的個(gè)位和十位 signal t:std_logic_vector(1 downto 0)。數(shù)碼管掃描計(jì)數(shù)信號(hào) signal data:std_logic_vector(3 downto 0)。 signal seg7_temp:std_logic_vector(7 downto 0)。 signal r1,r2,g1,g2,y1,y2:std_logic。begin1khz分頻process(clk)variable count:integer range 0 to 2999。beginif clk39。event and clk=39。139。 then if count=2999 then clk1khz=not clk1khz。count:=0。 else count:=count+1。 end if。end if。end process。1hz分頻process(clk1khz) variable count:integer range 0 to 499。beginif clk1khz39。event and clk1khz=39。139。 then if count=499 then clk1hz=not clk1hz。count:=0。 else count:=count+1。 end if。end if。end process。 交通狀態(tài)轉(zhuǎn)換process(clk1hz) variable stx:states。 variable a:std_logic。倒計(jì)時(shí)賦值標(biāo)志位 variable qh,ql:std_logic_vector(3 downto 0)。計(jì)數(shù)的高位和低位beginif clk1hz39。event and clk1hz=39。139。 thencase stx iswhen st1=if jin=39。039。 then狀態(tài)st1,主干道通行35秒 if a=39。039。 then qh:=0011。高位為3 ql:=0100。低位為4 a:=39。139。 r1=39。039。 y1=39。039。 g1=39。139。主干道綠燈亮 r2=39。139。支干道紅燈亮 y2=39。039。 g2=39。039。 else if qh=0 and ql=1 then 如果倒計(jì)時(shí)結(jié)束則轉(zhuǎn)到st2狀態(tài) stx:=st2。 a:=39。039。 qh:=0000。 ql:=0000。 elsif ql=0 then 實(shí)現(xiàn)倒計(jì)時(shí) ql:=1001。 qh:=qh1。 else ql:=ql1。 end if。 end if。 end if。when st2=if jin=39。039。 then 狀態(tài)st2,主干道黃燈倒計(jì)時(shí)5秒 if a=39。039。 then qh:=0000。高位為0 ql:=0100。低位為4 a:=39。139。 r1=39。039。 y1=39。139。主干道黃燈點(diǎn)亮 g1=39。039。 r2=39。139。支干道紅燈點(diǎn)亮 y2=39。039。 g2=39。039。 else if ql=1 then 如果倒計(jì)時(shí)結(jié)束則轉(zhuǎn)到st3狀態(tài) stx:=st3。 a:=39。039。 qh:=0000。 ql:=0000。 else ql:=ql1。 end if。 end if。 end if。when st3=if jin=39。039。 then 狀態(tài)st3,支干道通行25秒 if a=39。039。 then qh:=0010。高位為2 ql:=0100。低位為4 a:=39。139。 r1=39。139。主干道紅燈點(diǎn)亮 y1=39。039。 g1=39。039。 r2=39。039。 y2=39。039。 g2=39。139。支干道綠燈點(diǎn)亮 else if qh=0 and ql=1 then 如果倒計(jì)時(shí)結(jié)束則轉(zhuǎn)到st4狀態(tài) stx:=st4。 a:=39。039。 qh:=0000。 ql:=0000。 elsif ql=0 then 實(shí)現(xiàn)倒計(jì)時(shí)25s ql:=1001。 qh:=qh1。 else ql:=ql1。 end if。 end if。 end if。when st4=if jin=39。039。 then 狀態(tài)st4,支干道黃燈倒計(jì)時(shí)5秒 if a=39。039。 then qh:=0000。高位為0 ql:=0100。低位為4 a:=39。139。 r1=39。139。主干道紅燈點(diǎn)亮 y1=39。039。 g1=39。039。 r2=39。039。 y2=39。139。支干道綠燈點(diǎn)亮 g2=39。039。 else if ql=1 then 如果倒計(jì)時(shí)結(jié)束則轉(zhuǎn)到st1狀態(tài) stx:=st1。 a:=39。039。 qh:=0000。 ql:=0000。 else ql:=ql1。 end if。 end if。 end if。end case。end if。 one=ql。ten=qh。end process。禁止通行信號(hào),數(shù)碼管閃爍顯示process(jin,clk1hz,r1,r2,g1,g2,y1,y2,seg7_temp)beginif jin=39。139。 then ra=r1 or jin。主干道紅燈點(diǎn)亮 rb=r2 or jin。支干道紅燈點(diǎn)亮 ga=g1 and not jin。 gb=g2 and not jin。 ya=y1 and not jin。 yb=y2 and not jin。 實(shí)現(xiàn)顯示閃爍 seg7(0)=seg7_temp(0) and clk1hz。 seg7(1)=seg7_temp(1) and clk1hz。 seg7(2)=seg7_temp(2) and clk1hz。 seg7(3)=seg7_temp(3) and clk1hz。 seg7(4)=seg7_temp(4) and clk1hz。 seg7(5)=seg7_temp(5) and clk1hz。 seg7(6)=seg7_temp(6) and clk1hz。else seg7=seg7_temp。 ra=r1。 rb=r2。 ga=g1。 gb=g2。 ya=y1。 yb=y2。end if。end proce