【正文】
描述。2設(shè)計(jì)目標(biāo) 根據(jù)課題要求,實(shí)驗(yàn)中將目標(biāo)進(jìn)行了細(xì)化,敘述如下:設(shè)定數(shù)據(jù)幀格式為10bit,其中第一位為起始位,定位低電平,8位數(shù)據(jù)位,1位結(jié)無數(shù)據(jù)傳輸時(shí)為高電平; 系統(tǒng)設(shè)計(jì)1層次模塊劃分系統(tǒng)劃分為二層,自頂向下分別是頂層模塊、控制器子模塊。由各子模塊定義成的庫元件組成。輸出:送往發(fā)送模塊的4800Hz的信號(hào)。輸出:輸入數(shù)據(jù)的串行輸出。輸出:接收到的數(shù)據(jù)。每個(gè)數(shù)據(jù)有16個(gè)時(shí)鐘采樣,取中間的采樣值,以保證采樣不會(huì)滑碼或誤碼。分頻器實(shí)現(xiàn)相對(duì)簡(jiǎn)單,這里對(duì)其設(shè)計(jì)流程圖不做詳細(xì)介紹。為產(chǎn)生高精度的時(shí)鐘, 我選了16KHz的晶振來提供外部時(shí)鐘。(1) 模塊流程圖根據(jù)以上發(fā)送過程,發(fā)送模塊算法示意圖設(shè)計(jì)如圖23所示。為簡(jiǎn)化設(shè)計(jì),幀格式仍然采用:1 位開始位+ 8 位數(shù)據(jù)位+ 1 位停止位。圖27 UART接收模塊(3)波形仿真 新建一個(gè)原理圖文件,加入各功能模塊,并添加輸入輸出端口,各個(gè)模塊的連接如圖28所示。可以使用VHDL語言描述硬件電路了。4 總體電路的描述 頂層符號(hào)文件描述如下: 5 系統(tǒng)仿真驗(yàn)證 系統(tǒng)仿真分為兩個(gè)步驟進(jìn)行,首先是關(guān)鍵模塊的仿真,驗(yàn)證子系統(tǒng)功能的正確性,然后是綜合仿真,驗(yàn)證整個(gè)系統(tǒng)的功能。本課題中并沒有在數(shù)據(jù)幀中加入校驗(yàn)位,僅僅實(shí)現(xiàn)了1位起始位,1位停止位和8位數(shù)據(jù)位的傳輸。設(shè)計(jì)之初對(duì)資源使用沒有多少概念,時(shí)常以軟件的思想描述硬件,在描述中使用乘法等資源耗費(fèi)嚴(yán)重的操作,也曾使用過嵌套多層的IFELSE語句,產(chǎn)生很長(zhǎng)的選擇器,降低了模塊的可靠性,增加處理延時(shí)。行為級(jí)描述可能與實(shí)際綜合的電路產(chǎn)生不一致,需要謹(jǐn)慎對(duì)待。最深的感受在于,開始時(shí)一心專注于代碼的編寫和語法的使用,忽視了系統(tǒng)設(shè)計(jì),導(dǎo)致設(shè)計(jì)結(jié)果不令人滿意,后來逐步采用自頂向下的設(shè)計(jì)思路,先從邏輯上把系統(tǒng)的功能和子系統(tǒng)的劃分描述清楚,然后設(shè)計(jì)各個(gè)模塊的接口和定義,最后分別去描述底層各個(gè)模塊的功能和實(shí)現(xiàn),清晰明了,一氣呵成。[2] CPLD/FPGA可編程邏輯器件實(shí)用教程,馬彧,王丹利,王麗英,機(jī)械工業(yè)出版社,2010,7。 USE 。 ARCHITECTURE rtl OF clk_div IS SIGNAL count : STD_LOGIC_VECTOR(7 DOWNTO 0)。139。 clk_temp =NOT clk_temp。 END PROCESS。 use 。 end 。 then count:=0。 else serial=Send_data(count)。 end process。 entity count13 is port(clk,en:in std_logic。 begin if en=39。 if count=13 then Clock1=39。039。 else Clock3=39。 end process。 entity _receive10 is port(,clr,clk1,clk3:in std_logic。 architecture _receive10_arc of _receive10 is Signal Enable:std_logic :=39。 Signal N:std_logic_vector(0 to 2) :=000。039。 Num:=0。039。 end if。039。 else m:=m+1。 process(clr,) begin if clr=39。 elsif falling_edge() then Hold=39。 end _receive10_a