【正文】
ata=ZZZZZZZZ。信號為高阻態(tài) 功能設(shè)置 8位數(shù)據(jù),2行顯示,5*7的點陣 when setfunction = lcd_rs=39。039。命令 lcd_rw=39。039。讀 data=00111100。 開關(guān)控制 顯示開,光標(biāo)關(guān),閃爍關(guān) when switchmode = lcd_rs=39。039。 lcd_rw=39。039。 data=00001100。 模式設(shè)置 AC自動增一,畫面不動 when setmode = lcd_rs=39。039。 lcd_rw=39。039。 data=00000110。 清屏模式 when clear = lcd_rs=39。039。 lcd_rw=39。039。 data=00000001。 設(shè)置DDRAM地址 “10000000”選擇第一行地址(80H),“11000000”選擇第二行地址(C0H) when setddram = lcd_rs=39。039。 lcd_rw=39。039。 if chart38 then顯示個數(shù)不足38個字符時,選擇第一行地址顯示 data=10000000。 else data=11000000。 end if。 緩沖一 緩沖一,二,是因為字符RAM的輸入與輸出設(shè)置了寄存器 為了保證輸出數(shù)據(jù)與輸出地址一致,設(shè)置了這兩個緩沖器 when bufone = lcd_rs=39。039。 lcd_rw=39。039。 if chart38 then data=10000000。 else data=11000000。 end if。 緩沖二 when buftwo = lcd_rs=39。039。 lcd_rw=39。039。 if chart38 then data=10000000。 else data=11000000。 end if。 數(shù)據(jù)輸出模式 when writeram = lcd_rs=39。139。數(shù)據(jù) lcd_rw=39。039。讀 data=chardata。 其他狀態(tài)模式 when others = lcd_rs=39。039。 lcd_rw=39。139。 data=ZZZZZZZZ。信號為高阻態(tài) end case。end process L1。狀態(tài)轉(zhuǎn)換進程L2:process(clk,reset_n)begin if reset_n=39。039。 then state=idle。 chart=0。 elsif clk39。event and clk=39。139。 then case state is when idle = state=setfunction。 when setfunction = state=switchmode。 when switchmode = state=setmode。 when setmode = state=clear。 when clear = state=setddram。 when setddram = state=bufone。 when bufone = chart=chart+1。 state=buftwo。 when buftwo = chart=chart+1。 state=writeram。 when writeram = if chart=39 then state=setddram。 chart=chart+1。 elsif chart79 then state=writeram。 chart=chart+1。 else state=setddram。 chart=0。 end if。 when others = state=idle。 end case。 end if。 end process L2。地址循環(huán)進程L3:process(clk,reset_n,address)begin if reset_n=39。039。 then address=00000000。 elsif clk39。event and clk=39。139。 then if address=00000100 then address=00000000。 else address=address+00000001。 end if。 end if。 end process L3。L4:process(address,dchar,ain3,ain2,ain1,ain0)begin case address is when 00000000=dchar=(0000amp。ain3)。顯示第一位數(shù)據(jù) when 00000001=dchar=(00000010)。顯示‘.’ when 00000010=dchar=(0000amp。ain2)。顯示第二位數(shù)據(jù) when 00000011=dchar=(0000amp。ain1)。顯示第三位數(shù)據(jù) when 00000100=dchar=(0000amp。ain0)。顯示第四位數(shù)據(jù) when others=dchar=00000000。 end case。 end process L4。end one。當(dāng)三大模塊的VHDL語言組合在一起就得到了數(shù)字電壓表的VHDL程序,然后進行程序燒寫,排線,就形成了數(shù)字電壓表。調(diào)節(jié)滑動變阻器可以得到測量的電壓。第四章 總結(jié)隨著電子技術(shù)的不斷發(fā)展與進步,電子系統(tǒng)的設(shè)計方法發(fā)生了很大的變化,傳統(tǒng)的設(shè)計方法正逐步退出歷史舞臺,而基于EDA技術(shù)的芯片設(shè)計正在成為電子系統(tǒng)設(shè)計的主流。而FPGA是當(dāng)今應(yīng)用最廣泛的兩類可編程專用集成電路(ASIC)之一。其開發(fā)周期短、投資風(fēng)險小、產(chǎn)品上市速度快、市場適應(yīng)能力強和硬件升級回旋余地大,而且當(dāng)產(chǎn)品定型和產(chǎn)量擴大后,可將在生產(chǎn)中達到充分檢驗的VHDL設(shè)計迅速實現(xiàn)ASIC投產(chǎn)。對于大規(guī)模的邏輯設(shè)計、ASIC設(shè)計,或單片系統(tǒng)設(shè)計,則多采用FPGA。FPGA芯片是小批量系統(tǒng)提高系統(tǒng)集成度、可靠性的最佳選擇之一。本文設(shè)計的VHDL語言程序已在QuartusⅡ工具軟件上進行了編譯、仿真和調(diào)試,并通過編程器下載到了EPC2C8Q208C8芯片。經(jīng)過實驗驗證,本設(shè)計是正確的,其電壓顯示值誤差沒有超過量化臺階上限()。本文給出的設(shè)計思想也適用于其它PLD芯片的系列。