【文章內(nèi)容簡(jiǎn)介】
process(clk,w) isbegin if clk39。event and clk=39。139。 then if w=111 then w=000。 else w=w+1。 end if。 end if。 case w is when 000=n=s0。 when 001=n=s1。 when 010=n=10。 第10種狀態(tài),顯示分與秒之間的短線。 when 011=n=m0。 when 100=n=m1。 when 101=n=10。 第10種狀態(tài),顯示時(shí)與分之間的短線。 when 110=n=h0。 when 111=n=h1。 when others=null。 end case。 end process。 sel=w。四、仿真結(jié)果,s0為十進(jìn)制,仿真結(jié)果如下:3.m0為十進(jìn)制4.m1為六進(jìn)制5.h為二十四進(jìn)制 五、實(shí)驗(yàn)結(jié)果設(shè)定器件為EPM7128LC846,按分配好的引腳在試驗(yàn)箱上連線。輸入管腳有:脈沖clk,使能控制端en,置數(shù)選擇p2p1p0,置數(shù)端x3x2x1x0。輸出管腳有:數(shù)碼管位選輸出sel~sel0,數(shù)碼管段選輸出d6~d0。連線照片如下:電子表實(shí)物照片如下:從左到右為時(shí),分,秒。六、實(shí)驗(yàn)心得本次實(shí)驗(yàn)花費(fèi)了較長(zhǎng)時(shí)間,剛開始想電子表就是一個(gè)計(jì)數(shù)器,之前實(shí)驗(yàn)做過(guò)計(jì)數(shù)器,應(yīng)該很快能做出來(lái),但當(dāng)開始寫程序時(shí)發(fā)現(xiàn)有很多不同,也遇到了比較困難的問(wèn)題,要讓計(jì)數(shù)單位為1秒,脈沖還要比較快,脈沖的選擇和分頻就是一個(gè)重要問(wèn)題。還有時(shí)的高低位如何在數(shù)碼管上顯示出來(lái)的問(wèn)題,因?yàn)闀r(shí)是二十四進(jìn)制的,自己想了很久也沒(méi)有辦法解決,后來(lái)請(qǐng)教同學(xué),經(jīng)同學(xué)點(diǎn)撥,采用分段賦值的方法讓時(shí)的地高位分別顯示。覺(jué)得自己還是思維方式太狹窄,解決問(wèn)題的方法太單一,以后要擴(kuò)展思維,一條路行不通就換另一種方法,也許會(huì)更簡(jiǎn)單。總的來(lái)說(shuō),本次設(shè)計(jì)受益匪淺,一方面鞏固了EDA所學(xué)知識(shí),另一方面對(duì)自己的思維方式也有一些反思。七、附錄電子表源程序:library ieee。use 。use 。use 。entity dzb is port (clk:in std_logic。 en:in std_logic。 置數(shù)開關(guān) p:in std_logic_vector(2 downto 0)。置數(shù)選擇 x:in std_logic_vector(3 downto 0)。置數(shù)值 sel:out std_logic_vector(2 downto 0)。 掃描 d:out std_logic_vector(6 downto 0))。 end dzb。architecture behaver of dzb issignal t:std_logic。 計(jì)數(shù)單位,即1秒signal num:integer range 0 to 9。置數(shù)值signal n:integer range 0 to 10。 數(shù)碼管顯示值signal s0,s1,m0,m1,h0,h1:integer range 0 to 10。秒,分,時(shí)signal h:integer range 0 to 23。 signal c0,c1,c2,c3:std_logic。 進(jìn)位信號(hào)signal w:std_logic_vector(2 downto 0)。 位選begi