久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > 基于FPGA的UART接口模塊設計

基于FPGA的UART接口模塊設計

作者: 時間:2011-09-21 來源:網絡 收藏
2.1 發送

本文引用地址:http://cqxgywz.com/article/150190.htm

  發送由發送控制進程、寫數據進程、并/串轉換進程、狀態操作進程等進程構成。其中,最主要的是發送控制進程,在發送控制進程中聲明了一個6比特的變量scit_v,由它的取值(狀態機)狀態來控制整個發送過程。scit_v被分為高四位的sh_t和低兩位的sl_,tscit_v在系統復位后被賦初值28(011100B),每來一個時鐘scit_v增量,每來四個時鐘sh_t增量,當sh_t為0111B時發送起始位,sh_t為1000~1111B時發送8比特的數據。下面給出的是發送控制進程和發送接收數據進程的原代碼:

  -----數據發送控制進程-----

  PROCESS(clk,reset)

  variablescit_v:integerrange0to63;

  variablescit_s:std_logic_vector(tdownto0);

  BEGIN

  IF(reset=0')'THEN

  scit_v:=0;--000000

  ELSIF(clkE'VENTANDclk=1')'THEN

  IF(scit_v=27)THEN

  IF(tdEMPTY_s=0''ANDwr=1')'THEN

  scit_v:=28;--sci_v=011100

  ELSE

  scit_v:=0;

  ENDIF;

  ELSE

  scit_v:=scit_v+1;

  ENDIF;

  ENDIF;

  scit_s:=conv_std_logic_vector(scit_v,6);

  scit=TO_STDULOGICVECTOR(scit_s);

  ENDPROCESS;

  ------數據的串行發送-----

  PROCESS(sh_t)

  BEGIN

  CASEsh_tIS

  WHEN0111=>txd=0';'

  WHEN1000=>txd=din_latch(0);

  WHEN1001=>txd=din_latch(1);

  WHEN1010=>txd=din_latch(2);

  WHEN1011=>txd=din_latch(3);

  WHEN1100=>txd=din_latch(4);

  WHEN1101=>txd=din_latch(5);

  WHEN1110=>txd=din_latch(6);

  WHEN1111=>txd=din_latch(7);

  WHENOTHERS=>txd=1';'

  ENDCASE;

  ENDPROCESS;

  圖3給出的是發送數據的仿真圖。當CS和WR有效時寫入數據55H,同時EMPTY被置成無效狀態,開始數據的發送,從圖中可以看到TXD上電平的變化過程,當發送結束后EMPTY變為有效。

圖3 發送數據的仿真波形



評論


相關推薦

技術專區

關閉