在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

FPGA驅動AD芯片之實現與芯片通信

FPGA設計論壇 ? 來源:FPGA設計論壇 ? 2024-12-17 15:27 ? 次閱讀

概述:利用FPGA實現AD芯片的時序,進一步實現與AD芯片數據的交互,主要熟悉FPGA對時序圖的實現,掌握時序圖轉換Verilog硬件描述語言技巧后與其它芯片進行數據的交互也是類似的。

說明:FPGA芯片采用了altera的Cyclon IV E系列的“EP4CE10F17C8”,軟件環境-Quartus-Ⅱ,采用的AD芯片為—AD-TLC549。

通過FPGA實現以下時序設計:

f1e28984-b909-11ef-8732-92fbcf53809c.png

1.AD-TLC549簡介

位數:8位。
最大轉換時間:17us(36個內部時鐘周期)。
轉換速率:每秒40000次。
TOP VIEW:

f200be5e-b909-11ef-8732-92fbcf53809c.png


電路連接圖:

f20ee268-b909-11ef-8732-92fbcf53809c.png

2.AD-TLC549時序圖解析

From datasheet:

f22704ce-b909-11ef-8732-92fbcf53809c.png

2.1時序圖說明:

(1)當CS為高時,轉換結果數據串行輸出端DATA OUT處于高阻態,此時I/O CLOCK也不起作用。
(2)當CS為低時,AD前一次轉換的數據A的最高位A7立即出現在數據線DATA OUT上,其余的7位數據在I/O CLOCK的下降沿依次由時鐘同步輸出(方便我們在上升沿采集數據,細品)。

注意:

①當CS變為低電平到I/O CLOCK的第一個時鐘到來至少需要1.4us。

f23a5858-b909-11ef-8732-92fbcf53809c.png
②I/O CLOCK不能超過1.1M,Verilog代碼中采用了1M的時鐘。

f25071b0-b909-11ef-8732-92fbcf53809c.png


(3)讀完8位數據后,AD開始轉換下一幀 數據B,以便下次讀取,轉換時片選信號CS必須置高電平,每次轉換的時間不超過17us,轉換開始于CS變低后的I/O CLOCK的第8個下降沿,沒有轉換完成的標志信號;也沒有啟動控制端,只要讀取前一次數據后馬上就可以開始新的AD轉換,轉換完后就進入保持狀態。
f26e7610-b909-11ef-8732-92fbcf53809c.png

3.時序圖轉化為Verilog代碼

在時序圖轉化為Verilog代碼過程中,要注意的是時間t su {{ ext{t}}_{{ ext{su}}}}tsu=1.4us、t conv {{ ext{t}}_{{ ext{conv}}}}tconv=17us、I/O CLOCK=1MHz,AD轉換的時候I/O CLOCK是沒有的。

f281a758-b909-11ef-8732-92fbcf53809c.png


f23a5858-b909-11ef-8732-92fbcf53809c.png
f26e7610-b909-11ef-8732-92fbcf53809c.png

(1)代碼TOP VIEW:

f2cb248c-b909-11ef-8732-92fbcf53809c.png


(2)代碼按以下狀態機編寫:

f2de508e-b909-11ef-8732-92fbcf53809c.png


狀態1:CS拉低至CLK第一個上升沿。
狀態2:在I/O CLOCK8個上升沿讀取數據。
狀態3:等待AD轉換完成。
狀態4:AD轉換完完成。

(3)依據時序圖完成以下代碼:

//系統時鐘為50M,周期為20ns; AD時鐘為1M,周期為1us

`define Tsu_time 10'd70//70*20=1.4us,Tsu延時的計數終值
`define Cov_time 10'd850//850*20=17us, Cov延時的計數終值
`define CLK_time 10'd50//20*50=1us,  實現1M AD時鐘得計數終值
`define CLKHALF_time 10'd25//20*25=0.5us,實現1M AD時鐘得計數中值

module AD_TLC549
(
//輸入
inputCLK_50M,//系統時鐘
input RST_N,//復位
input AD_DATA,//8bit AD原始數據
//輸出
output reg AD_CS,//片選
output reg AD_CLK//AD時鐘1M
);

//狀態機,四個狀態;狀態1:CS拉低至CLK第一個上升沿,狀態2:讀取數據,狀態3等待轉換,狀態4:轉換完成
reg [2:0]SM_NOW/*synthesis preserve*/; //現在的狀態
reg [2:0]SM_NEXT/*synthesis preserve*/;//下一狀態
parameter SM_Tsu= 3'd0, //CS拉低至CLK第一個上升沿1.4us
SM_Data = 3'd1, //讀取AD數據8個AD_CLK
SM_Cov= 3'd2, //等待轉換17us
SM_End= 3'd3; //轉換完成

//產生計數
reg[9:0] Time_cnt;//在狀態機的每個狀態開始都會被清零,可以運用至每個狀態的計數
reg[3:0] CLK_posedge;//AD_CLK 的8個時鐘上升沿

//讀取的8bit數據
reg[7:0]DATA;//數據現態
reg[7:0]    DATA_N/*synthesis preserve*/;//數據的下一個狀態


//時鐘
reg AD_CLK_N;//AD_CLK的下一個狀態


//時序產生,Tsu計時、Cov計時、AD_CLK計時
always@(posedge CLK_50M or negedge RST_N)
begin
if(!RST_N)
Time_cnt <= 10'd0;
else if(SM_NOW != SM_NEXT)
Time_cnt <= 10'd0;
else if(SM_NOW == SM_Tsu)//產生tus延時
begin
if(Time_cnt == `Tsu_time)
Time_cnt <= 10'd0;
else
Time_cnt <= Time_cnt + 10'd1;
end
else if(SM_NOW == SM_Cov)//產生Cov延時
begin
if(Time_cnt == `Cov_time)
Time_cnt <= 10'd0;
else
Time_cnt <= Time_cnt + 10'd1;
end
else if(SM_NOW == SM_Data)//產生CLK
begin
if(Time_cnt == `CLK_time)
Time_cnt <= 10'd0;
else
Time_cnt <= Time_cnt + 10'd1;
end
else
Time_cnt <= Time_cnt;
end

//產生AD_CLK
always@(posedge CLK_50M or negedge RST_N)
begin
if(!RST_N)
AD_CLK <= 0;
else
AD_CLK <= AD_CLK_N;
end
always@(*)
begin
if(SM_NOW != SM_Data)
AD_CLK_N = 0;
else if(Time_cnt == `CLKHALF_time)//半周期
begin
AD_CLK_N = 1;//CLK_H
end
else if(Time_cnt == `CLK_time)//滿周期
AD_CLK_N = 0;//CLK_L
else
AD_CLK_N = AD_CLK;
end

//記錄AD_CLK的8個上升沿
always@(posedge CLK_50M or negedge RST_N)
begin
if(!RST_N)
CLK_posedge <= 4'd0;
else if(SM_NOW != SM_Data)
CLK_posedge <= 4'd0;
else if(Time_cnt == `CLKHALF_time)
CLK_posedge <= CLK_posedge + 4'd1;
else
CLK_posedge <= CLK_posedge;
end

//CS信號產生
always@(posedge CLK_50M or negedge RST_N)
begin
if(!RST_N)
AD_CS <= 1'b1;
else
begin
if(SM_NOW == SM_Tsu)
AD_CS <= 1'b0;
else if(SM_NOW == SM_Cov)
AD_CS <= 1'b1;
else
AD_CS <= AD_CS;
end
end


//狀態機,產生AD時序
always@(posedge CLK_50M or negedge RST_N)
begin
if(!RST_N)
SM_NOW <= 3'd0;
else
SM_NOW <= SM_NEXT;
end
always@(*)
begin
case(SM_NOW)
SM_Tsu://狀態1:CS拉低至CLK第一個上升沿。
if(Time_cnt == `Tsu_time)
SM_NEXT = SM_Data;
else
SM_NEXT = SM_Tsu;
SM_Data://狀態2:在I/O CLOCK8個上升沿讀取數據。
if(CLK_posedge == 4'd8 && Time_cnt == `CLK_time)
SM_NEXT = SM_Cov;
else
SM_NEXT = SM_Data;
SM_Cov: //狀態3:等待AD轉換完成。
if(Time_cnt == `Cov_time)
SM_NEXT = SM_End;
else
SM_NEXT = SM_Cov;
SM_End://狀態4:AD轉換完完成。
 SM_NEXT <= SM_Tsu;
default:SM_NEXT <= SM_Tsu;
endcase
end



//提取數據
always@(posedge CLK_50M or negedge RST_N)
begin
if(!RST_N)
DATA <= 8'b0;
else
DATA <= DATA_N;
end

always@(*)
begin
if((SM_NOW == SM_Data)&&(!AD_CLK)&&(AD_CLK_N))//上升沿
DATA_N = {DATA[6:0],AD_DATA};
else
DATA_N = DATA;
end

endmodule

4. 仿真結果

通過SignalTapⅡ仿真得到以下波形:

f2e9368e-b909-11ef-8732-92fbcf53809c.png


波形解析:

(1)t su {{ ext{t}}_{{ ext{su}}}}tsu:
用計數器實現了1.9us延時,大于了1.4us。

f2fea316-b909-11ef-8732-92fbcf53809c.png

(2)t conv {{ ext{t}}_{{ ext{conv}}}}tconv:
用計數器實現17us延時

f30665a6-b909-11ef-8732-92fbcf53809c.png


(3)8bit數據及其時鐘:

f31bc086-b909-11ef-8732-92fbcf53809c.png

原文鏈接:

https://openatomworkshop.csdn.net/6746bf193a01316874d9466f.html

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • FPGA
    +關注

    關注

    1629

    文章

    21736

    瀏覽量

    603319
  • 通信
    +關注

    關注

    18

    文章

    6032

    瀏覽量

    135990
  • AD芯片
    +關注

    關注

    2

    文章

    25

    瀏覽量

    18399

原文標題:FPGA驅動AD芯片_實現與芯片通信

文章出處:【微信號:gh_9d70b445f494,微信公眾號:FPGA設計論壇】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    如何排查FPGA與USB之間的芯片通信問題?

    ”,而在SBBulkSourceSink固件中沒有顯示這個錯誤,可不可以證明我的FPGA和USB之間通信成功?另外,我該如何排查FPGA與USB之間的芯片
    發表于 02-27 06:46

    FPGA芯片的選擇問題

    本人剛剛接觸FPAG不久,之前用cyclone3的DE0開發板自己編過串口通信和CRC校驗,但是對FPGA整體了解還很菜鳥,現在想用FPGA實現一個自動控制,需要DA和AD,不想用開發
    發表于 06-13 14:59

    PCI總線協議的FPGA實現驅動設計

    PCI總線協議的FPGA實現驅動設計 摘要! 采用FPGA技術! 在公司的flex6000系列芯片
    發表于 03-12 14:30 ?36次下載

    擴頻通信芯片STEL-2000A的FPGA實現

    針對傳統集成電路(ASIC)功能固定、升級困難等缺點,利用FPGA實現了擴頻通信芯片STEL-2000A的核心功能。使用ISE提供的DDS IP核
    發表于 11-22 16:23 ?44次下載

    基于FPGA-SPARTAN芯片的CCD的硬件驅動電路設計

      CCD驅動電路的實現是CCD應用技術的關鍵問題。以往大多是采用普通數字芯片實現驅動電路,CCD外圍電路復雜,為了克服以上方法的缺點,利用
    發表于 08-30 09:58 ?1386次閱讀
    基于<b class='flag-5'>FPGA</b>-SPARTAN<b class='flag-5'>芯片</b>的CCD的硬件<b class='flag-5'>驅動</b>電路設計

    芯片fpga實現及仿真

    dac0832ad08098259a,825382508255等芯片fpga實現及仿真
    發表于 01-20 15:12 ?13次下載

    低成本的采用FPGA實現SDH設備時鐘芯片技術

    介紹一種采用FPGA(現場可編程門陣列電路)實現SDH(同步數字體系)設備時鐘芯片設計技術,硬件主要由1 個FPGA 和1 個高精度溫補時鐘組成.通過該技術,可以在
    發表于 11-21 09:59 ?2199次閱讀
    低成本的采用<b class='flag-5'>FPGA</b><b class='flag-5'>實現</b>SDH設備時鐘<b class='flag-5'>芯片</b>技術

    基于FPGA 的嵌入式系統程序開發實現對ARM 接口通信控制模塊、芯片驅動模塊的程序設計

    數字存儲示波器采用ARM 與FPGA 雙處理器結合的嵌入式系統設計方案,重點介紹在FPGA 中如何實現對外圍芯片通信
    發表于 11-18 05:47 ?2668次閱讀
    基于<b class='flag-5'>FPGA</b> 的嵌入式系統程序開發<b class='flag-5'>實現</b>對ARM 接口<b class='flag-5'>通信</b>控制模塊、<b class='flag-5'>芯片</b><b class='flag-5'>驅動</b>模塊的程序設計

    如何吧項目實現FPGA芯片

    在本輔導教材中,將重點講解如何將一個設計項目物理地實現FPGA 芯片中。我們將展示如何用手工的方法選擇器件封裝的引腳,并且把這些引腳用做電路的輸入和輸出信號,此外還將描述如何使用Quartus II 編程器模塊把編譯完的電路傳
    發表于 10-27 16:26 ?20次下載
    如何吧項目<b class='flag-5'>實現</b>在<b class='flag-5'>FPGA</b><b class='flag-5'>芯片</b>中

    基于FPGA芯片和SOPC技術實現水文測報通信系統的設計

    隨著微電子工藝技術和IC設計技術的不斷提高,整個系統都可集成在一個芯片上,而且系統芯片的復雜性越來越高。為了提高效率,復用以前的設計模塊已經成為系統世馘 (SOC)設計的必上之路。SOC的實現基本上有兩種方法,一種是用ASIC
    的頭像 發表于 06-11 15:55 ?2111次閱讀
    基于<b class='flag-5'>FPGA</b><b class='flag-5'>芯片</b>和SOPC技術<b class='flag-5'>實現</b>水文測報<b class='flag-5'>通信</b>系統的設計

    如何使用FPGA驅動并行ADC和并行DAC芯片

    ADC和DAC是FPGA與外部信號的接口,從數據接口類型的角度劃分,有低速的串行接口和高速的并行接口。FPGA經常用來采集中高頻信號,因此使用并行ADC和DAC居多。本文將介紹如何使用FPGA
    的頭像 發表于 04-21 08:55 ?7120次閱讀

    芯片行業之淺談FPGA芯片

    FPGA 是數字芯片的一類分支,與CPU、GPU等功能固定芯片不同的是, FPGA 制造完成后可根據用戶需要,賦予其特定功能。 FPGA
    的頭像 發表于 02-08 06:20 ?4100次閱讀

    FPGA高級設計之實現功耗優化

    點擊上方 藍字 關注我們 ? FPGA 高級設計之實現功耗優化 與ASICs(Application Specific Integrated Circuits)比較,相似的邏輯功能,用FPGA
    的頭像 發表于 05-19 13:50 ?1289次閱讀

    fpga芯片工作原理 fpga芯片有哪些型號

    部分。這些部分共同構成了FPGA的基本結構,使其具有高度的靈活性和可配置性。 在FPGA中,小型查找表(LUT)是實現組合邏輯的關鍵組件。每個查找表連接到一個D觸發器的輸入端,觸發器進而驅動
    的頭像 發表于 03-14 17:17 ?1505次閱讀

    DS1302芯片FPGA之間SPI通信原理

    本文通過以DS1302芯片為基礎,介紹該芯片FPGA之間SPI通信原理,詳細描述硬件設計原理及FPGA SPI接口
    的頭像 發表于 10-24 14:16 ?457次閱讀
    DS1302<b class='flag-5'>芯片</b>與<b class='flag-5'>FPGA</b>之間SPI<b class='flag-5'>通信</b>原理
    主站蜘蛛池模板: 天天在线影院| 日韩免费精品视频| 欧美一区二区三区影院| 成年人网站黄色| 超级毛片| 曰本毛片| 亚洲狠狠操| 精品国产你懂的在线观看| 天天干干干| 东北美女野外bbwbbw免费| free性欧美video69| 天天视频色版| 老色皮永久免费网站| 手机在线看福利| 久久99久久精品国产只有| 亚洲黄色影片| 国产三级精品在线| 亚州第一视频| 亚洲综合在线一区| 伊人网狠狠干| 国产手机在线国内精品| 国产色在线 | 亚洲| 亚洲图片欧美色图| 美女性视频网站| 奇米小说| 日本网站免费| 午夜免费福利网站| 亚洲 午夜在线一区| 亚洲国产精品网站久久| 国产三级a三级三级天天| 国产18到20岁美女毛片| 迅雷www天堂在线资源| 波多野结衣在线免费视频| 欧美黄免在线播放| 亚洲va久久久噜噜噜久久天堂| 国产1区2区三区不卡| 国产综合精品久久久久成人影| 在线观看中文字幕第一页| 高清一级做a爱免费视| 8888四色奇米在线观看不卡| 特级毛片a级毛免费播放|