【文章內(nèi)容簡(jiǎn)介】
nd process。 end _arc。 其中,Send_data(0 to 9)表示需要發(fā)送的數(shù)據(jù)幀,發(fā)送時(shí),開始位Send_data(0)必須為邏輯0,停止位Send_data(9)必須為邏輯1,否者與硬件電路連接的設(shè) 備接收到的數(shù)據(jù)會(huì)出現(xiàn)錯(cuò)誤。在發(fā)送每一幀之前,首先給輸入端en一個(gè)低電平脈沖,讓電路復(fù)位(count置0),然后開始發(fā)送。變量count 在進(jìn)程中用來記錄發(fā)送的數(shù)據(jù)數(shù)目,當(dāng)數(shù)據(jù)幀發(fā)送完后,發(fā)送端就一直發(fā)送停止位(邏輯1)。 時(shí)序仿真 選EDA工具,對(duì)VHDL源程序編譯。用的是 Altera公司的MAX+plus II Baseline,這個(gè)工具支持VHDL的編譯、仿真。圖2是編譯后的仿真結(jié)果,其中,Clk為頻率9600Hz的時(shí)鐘,Send_data0為開始 位,Send_data[8..0]為數(shù)據(jù)位, Send_data9為停止位。結(jié)果顯示,輸出完全是按數(shù)據(jù)幀格式發(fā)送的。4 串行接收電路的設(shè)計(jì) 接收電路比發(fā)送電路要復(fù)雜,接收電路要時(shí)實(shí)檢測(cè)起始位的到來,一旦檢測(cè)到起始位到,就要將這一幀數(shù)據(jù)接收下來。為提高接收的準(zhǔn)確性,減少誤碼率,每 一位數(shù)據(jù)都用3倍頻的波特率對(duì)數(shù)據(jù)進(jìn)行采樣(如圖3所示),然后對(duì)3次采樣結(jié)果進(jìn)行判決:如果3次采樣中至少有2次為高電平,則接收這一位數(shù)據(jù)被判決為高 電平,否者,為低電平。 波特率發(fā)生器和采樣時(shí)鐘的設(shè)計(jì) 為完成3次采樣,除了頻率為9600Hz的接收時(shí)鐘外,還要有一個(gè)3倍頻的采樣時(shí)鐘。下面是實(shí)現(xiàn)上述功能的VHDL源程序: library ieee。 use 。 entity count625 is port(clk,en:in std_logic。 Clock1,Clock3:out std_logic)。 end count625。 architecture count625_arc of count625 is begin process(clk,en) variable count:integer range 0 to 625 :=0。 begin if en=39。039。 then NUll。 elsif (rising_edge(clk)) then count:=count+1。 if count=625 then Clock1=39。139。 count:=0。 else Clock1=39。039。 end if。