国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

基于FPGA的數字存儲示波器對外圍芯片的控制設計

發布時間:2014-12-17 15:42    發布者:designapp

        數字存儲示波器作為測試技術的重要工具,被廣泛應用于各個領域,并逐步取代傳統模擬示波器。其采樣數據是波形運算和分析的基礎,直接影響到整個數字存儲示波器的準確性。從這點出來,提出采用現場可編程邏輯器件( FPGA) 作為數字存儲示波器采樣控制系統的核心,從芯片間有效協助的角度,基于FPGA 設計ARM 接口通信控制模塊和外圍芯片驅動功能模塊,以FPGA 為核心有效地組織其它芯片,共同完成數字存儲示波器數據采樣過程,確保數據按需求采樣,有效地提高數字存儲示波器的采樣效率和數據的可靠性。
1 數字存儲示波器的總體設計方案
數字存儲示波采用雙處理器( ARM + FPGA) 的嵌入式系統設計方案,ARM 內嵌WINCE 操作系統,整個采樣系統主要在FPGA 里完成,從功能的角度分成采樣信息處理子系統與采樣控制子系統,本文著重介紹采樣控制子系統的驅動部分,由ARM 接口控制模塊與芯片驅動模塊組成。如圖1 所示:


圖1 數字存儲示波器總體功能模塊圖





       

2 系統驅動模塊設計
2. 1 ARM 接口通信控制模塊設計
ARM 接口通信控制模塊為主要的控制模塊,如圖2 所示。


圖2 ARM 接口通信控制部分功能模塊圖

加入這個模塊而不直接鏈接兩個芯片有以下兩點原因:
1) ARM 作為主控芯片的控制模塊,引腳數量有限。如果ARM 接口直接與FPGA 接口相連,會占用ARM 過多的接口。
2) ARM 和FPGA 相連的信號線由于存在各種干擾,有時會出現毛刺現象,影響測量效果。
所以為了測量的穩定準確,需要加入FPGA 和ARM 的接口模塊。此模塊是本設計的重點也是難點。其原理以下結合圖2 來說明。
ARM 接口通信控制模塊左邊為跟ARM 鏈接的接口,分別為1 路時鐘cmd_clk,3 路的命令線cmd_sel[2. . 0],8 路數據線cmd_data[7. . 0]。右邊為FPGA 響應的相關接口,在此不作一一講述,下面主要講術FPGA 與ARM 之間的通信協議。
cmd_clk 為1 位輸出接口,是ARM 與FPGA 的同步時鐘,用作同步通信。
cmd_sel[2. . 0]為3 位輸出接口,用作設置cmd_data[7. . 0]的模式選擇。
cmd_data[7. . 0]為8 位輸出接口,是ARM 發送到FPGA 的命令或數據。
功能實現方面采用了VHDL 語言,以文本輸入作為設計輸入,主要運用CASE 與PROCESS 語句,部分程序如下所示。
PROCESS( cmd_clk, cmd_sel) / /進程,對cmd_clk 與cmd_sel 進行變化捕捉。
BEGIN / /進程開始。
IF cmd_clk'EVENT AND cmd_clk = '1' THEN / /捕捉時鐘信號上升沿觸發。
IF cmd_sel( 2) = '1' THEN / / cmd_sel( 2) = '1'時, cmd_data[7. . 0]的輸出為數據模式
r_add_add < = cmd_data; / /數據賦值
ELSE / / cmd_sel( 2) = '0'時, cmd_data[7. . 0]的輸出為命令模式
CASE r_add_add IS / /命令查詢
WHEN X"00" = > IF cmd_sel = "000" THEN r_DAT_DATA_A( 7 DOWNTO 0) < = cmd_data; - -
ELSIF cmd_sel = "001" THEN r_DAT_DATA_A( 11 DOWNTO 8) < = cmd_data( 3 DOWNTO 0) ;
END IF;
WHEN X"01" = > IF cmd_sel = "000" THEN r_DAT_DATA_B( 7 DOWNTO 0) < = cmd_data;
ELSIF cmd_sel = "001" THEN r_DAT_DATA_B( 11 DOWNTO 8) < = cmd_data( 3 DOWNTO 0) ; END IF;
WHEN X"02" = > IF cmd_sel = "000" THEN r_DAT_DATA_C( 7 DOWNTO 0) < = cmd_data;
ELSIF cmd_sel = "001" THEN r_DAT_DATA_C( 11 DOWNTO 8) < = cmd_data( 3 DOWNTO 0) ; END IF;
WHEN X"03" = > IF cmd_sel = "000" THEN r_DAT_DATA_D( 7 DOWNTO 0) < = cmd_data;
ELSIF cmd_sel = "001" THEN r_DAT_DATA_D( 11 DOWNTO 8) < = cmd_data( 3 DOWNTO 0) ; END IF;
……/ /省略
WHEN X"08" = > IF cmd_sel = "000" THEN r_HC74_DAT_DATA( 7 DOWNTO 0) < = cmd_data; - -
ELSIF cmd_sel = "001" THEN r_HC74_DAT_DATA( 15 DOWNTO 8) < = cmd_data; - -
ELSIF cmd_sel = "010" THEN r_HC74_DAT_DATA( 23 DOWNTO 16) < = cmd_data; END IF;
/ / cmd_sel[2. . 0]的后兩位作為數據位數的選擇,這里可選為8 位、16 位、24 位。
……/ /省略
WHEN OTHERS = > r_X9313_DATA < = cmd_data( 4 DOWNTO 0) ;
END CASE;
END IF;
END IF;
END PROCESS;
本程序是一個進程,當cmd_sel( 2) = '1'時,cmd_data[7. . 0]作為數據傳輸。當cmd_sel( 2) = '0'時,cmd_data[7. . 0]作為命令選擇傳輸。cmd_sel( 1) 與cmd_sel( 0) ,作為發送數據位數選擇,這是由于不同的指令操作,需要不同的數據位數,在這段程序中,有需要發送8 位數據的,有需要發送12 位的數據,有需要發送16 位的數據,還有需要發送24 位的數據,這取決于驅動的芯片所固定的數據位輸入格式要求。




       
2. 2 芯片驅動模塊設計
芯片驅動模塊的例化組件圖,如圖3 所示。


圖3 芯片驅動模塊例化組件


圖3 是已經封裝好的功能模塊,其內部結構如圖4 所示。


圖4 LTC2620 的接口例化組件圖


由此可知,該模塊內部還可以有子模塊。分別為控制外圍三個芯片的驅動,它們是芯片LTC2620、芯片X9313、芯片HC574。這些子模塊只是一個接口,并非是一個真正的芯片,可以說是一個接口函數以圖形化的方式來給調用,讓程序結構更佳形象具體,其實它們都是通過VHDL 語言編程程序代碼而成的。圖4 的左邊是輸入接口,主要是與ARM 接口通信控制模塊( 圖2) 的接口連接,而右邊的是輸出接口,當然這些輸出接口是FPGA 的I /O 引腳,這才能與真實的芯片相應應的引腳連接。
下面以芯片LTC2620 為例,說明其驅動過程。圖4 右上角是LTC2620 的接口例化組件,是由VHDL語言生成的,首先是VHDL 的實體部分,主要是定義端口及其屬性。
ENTITY LTC2620_comtrol IS
PORT(
clk5m : IN STD_LOGIC;
clr_n : IN STD_LOGIC;
DAT_DATA_A : IN STD_LOGIC_VECTOR( 11 DOWNTO 0) ;
DAT_DATA_B : IN STD_LOGIC_VECTOR( 11 DOWNTO 0) ;
DAT_DATA_C : IN STD_LOGIC_VECTOR( 11 DOWNTO 0) ;
DAT_DATA_D : IN STD_LOGIC_VECTOR( 11 DOWNTO 0) ;
DAT_DATA_E : IN STD_LOGIC_VECTOR( 11 DOWNTO 0) ;
DAT_DATA_F : IN STD_LOGIC_VECTOR( 11 DOWNTO 0) ;
DAT_DATA_G : IN STD_LOGIC_VECTOR( 11 DOWNTO 0) ;
DAT_DATA_H : IN STD_LOGIC_VECTOR( 11 DOWNTO 0) ;
n_CS_LD : OUT STD_LOGIC;
SCK : OUT STD_LOGIC;
SDI : OUT STD_LOGIC) ;
END;
其中n_CS_LD、SCK、SDI 為輸出端口,是根據芯片LTC2620 的輸入引腳而設定的。芯片LTC2620 引腳圖如圖5 所示。


圖5 LTC2620 引腳圖


接口與引腳已經連接好,但還需要仿真這三個引腳的工作時序。這就需要根據芯片LTC2620 手冊說明來來模擬其時序以及其數據輸入格式,為4 位命令+ 4 位地址+ 12 位數據流,共20 位數據,但數據一般以8 位為單位,即一個字節,所以需要發送24 位數據,其中16 位數據流的前4 位都需要作置零處理。LTC2620 時序圖如圖6 所示。


圖6 LTC2620 輸入引腳時序圖


數據輸入格式如圖7 所示。


圖7 輸入引腳數據格式圖





       
接著,使用VHDL 在其結構體部分編寫LTC2620 時序,需要設計兩個進程來完成,分別是PROCESS( clk5m,clr_n) 進程和PROCESS( load_clk,clr_n,DAT_DATA_A) 進程。
首先定義數據格式,分成三部分,COMMAND( C3 - C0) 、ADDRESS ( A3 - A0) 和DATA ( D11 -D0) ,一共為20 位,要分三個字節發送,即24 位。數據格式定義的VHDL 代碼:

CONSTANT CNT_COMMAMD_DATA : STD_LOGIC_VECTOR( 3 DOWNTO 0) : = "0011" ;
/ /COMMAND( C3 - C0)
SIGNAL ADDRESS_DATA : STD_LOGIC_VECTOR( 3 DOWNTO 0) ;
/ / ADDRESS( A3 - A0)
SIGNAL DAT_DATA: STD_LOGIC_VECTOR( 11 DOWNTO 0) ;
/ / DATA( D11 - D0)
根據圖6,對時序SCK、SDI、CS /LD 進行定義:
SIGNAL r_n_CS_LD,r_SCK,r_SDI : STD_LOGIC;
內部時鐘定義:
SIGNAL r_load, load_clk, load_en : STD_LOGIC;
再設定三個進程來模擬圖7 的SCK、SDI、CS /LD 三個時序圖。
1) 進程1 主要是通過內部時鐘生成SCK 時序
代碼為:

PROCESS( clk5m, clr_n)
VARIABLE tp : INTEGER RANGE 0 TO 25;
BEGIN
IF clr_n = '0' THEN
tp: = 0; load_clk < = '0';
ELSIF clk5m'EVENT AND clk5m = '1' THEN
IF tp < 25 THEN
tp: = tp + 1; load_clk < = '1';
ELSE
tp: = 0; load_clk < = '0';
END IF;
END IF;
END PROCESS;
2) 進程2 主要是設置LTC2620 的8 個輸出引腳VoutA - VoutH 與ADDRESS ( A3 - A0) 之間的對應關系,ADDRESS,如表1 所示。




使用CASE 語句完成,代碼如下:

CASE state IS
WHEN 1 = > DAT_DATA < = DAT_DATA_B; ADDRESS_DATA < = "0001" ;
WHEN 2 = > DAT_DATA < = DAT_DATA_C; ADDRESS_DATA < = "0010" ;
WHEN 3 = > DAT_DATA < = DAT_DATA_D; ADDRESS_DATA < = " 0011" ; WHEN 4 = > DAT_DATA <
= DAT_DATA_E; ADDRESS_DATA < = "0100" ; WHEN 5 = > DAT_DATA < = DAT_DATA_F; ADDRESS_DATA <
= "0101" ; WHEN 6 = > DAT_DATA < = DAT_DATA_G; ADDRESS_DATA < = " 0110" ; WHEN 7 = > DAT_DATA
< = DAT_DATA_H; ADDRESS_DATA < = " 0111" ; WHEN OTHERS = > DAT_DATA < = DAT_DATA_B; ADDRESS_
DATA < = "0001" ; load_en < = '0';
END CASE;
3) 進程3 主要是設置DATA ( D11 - D0) 的數據輸出,每次需發送24 位數據,其中4 位無用上,給置0 處理,代碼如下:
IF r_load = '0' THEN
data( 23 DOWNTO 20) : = CNT_COMMAMD_DATA;
data( 19 DOWNTO 16) : = ADDRESS_DATA;
data( 15 DOWNTO 4 ) : = DAT_DATA;
data( 3 downto 0) : = "0000" ;
……/ /省略;
end IF;
3 結語
本文詳細介紹了使用VHDL 硬件描述語言,程序編寫過程,對兩個功能模塊進行基于FPGA 的嵌入式系統程序開發。實現了ARM 接口通信控制模塊、芯片驅動模塊的程序設計,有效地解決了芯片間之間的通信與驅動的問題,以FPGA 為核心,有效地實現芯片間的相互協作,為數字存儲示波器數據采樣提供重要的可靠性。



本文地址:http://m.qingdxww.cn/thread-135937-1-1.html     【打印本頁】

本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
您需要登錄后才可以發表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區
  • Chiptorials ——使用ATECC608 TrustFLEX實現基本非對稱身份驗證
  • Chiptorials ——如何將CryptoAuthLib庫用于Microchip安全身份驗證IC
  • 無線充電基礎知識及應用培訓教程
  • FPGA設計流程培訓教程
  • 貿澤電子(Mouser)專區

相關視頻

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产成人在线视频网站 | 欧美一级做一级爱a做片性 欧美一级做一a做片性视频 | 亚洲天堂2018av| 国产香蕉尹人综合在线观 | 久久九九免费 | 久久一本热 | 在线视频一区二区三区三区不卡 | 国产精品高清久久久久久久 | 日韩国产毛片 | www.欧美在线| 欧美级| 99爱视频在线 | 男人天堂va| 99热国产免费| 日本韩国一级 | 日韩精品视频免费 | 视频久久 | 羞羞人成午夜爽爽影院 | 久操美女 | 亚洲综合校园春色 | 天天摸夜夜添 | 日韩在线视频网址 | 亚洲欧美日韩久久一区 | 色综合中文字幕天天在线 | 欧美亚洲国产一区二区 | 日韩国产精品欧美一区二区 | 久久精品国产99久久72 | 成人免费在线视频网站 | 国产在线原创剧情麻豆 | 日韩大片免费观看视频播放 | 日本一区高清视频 | 一级做α爰片久久毛片 | 天天色综合久久 | 91香焦国产线观看看免费 | 日韩视频在线免费观看 | 999视频网 | 97中文字幕在线观看 | 亚洲手机在线手机观看高清hd | 国产伦精品一区二区三区精品 | 日本不卡专区 | 久久精品国产亚洲综合色 |