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

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

3天內不再提示

Vivado系列之TCL549驅動設計

FPGA技術江湖 ? 來源:FPGA技術江湖 ? 2023-07-27 09:25 ? 次閱讀

系統性的掌握技術開發以及相關要求,對個人就業以及職業發展都有著潛在的幫助,希望對大家有所幫助。本次帶來Vivado系列,TLC549驅動設計。話不多說,上貨。

TCL549驅動設計

在生活中,數模轉換的例子到處可見。但是在我們做FPGA設計時,需要對數字信號進行處理,但是,不是所有的信號都是以數字信號的形式體現的,比如光信號、聲信號、電信號等等。那么此時就需要我們先進行一下模數轉換之后再進行處理。在此,我們將介紹一款模數轉換芯片TLC549。

TLC549是一款串行總線控制的8bit模數轉換芯片,封裝如下圖:

0f07a096-2c0a-11ee-a368-dac502259ad0.png

管腳說明:

0f1a8828-2c0a-11ee-a368-dac502259ad0.png

芯片特征:

1、8bit A/D轉換器。

2、最大轉換時間為17us。

3、供電3V~6V之間。

4、低功耗最大功率為15mW。

在官方手冊中,對此芯片有這樣的一段描述:

0f3fa6da-2c0a-11ee-a368-dac502259ad0.png

在這段描述中,大致說出了這個芯片的一些控制。比如:TLC548和TLC549都是8bit的模數轉換器。這個芯片使用I/O CLOCK和CS_N來控制數據。TLC548的I/O CLOCK最大頻率為2.048MHz,TLC549的I/O CLOCK最大頻率為1.1MHz。

在這段描述中可以看出,AD芯片的數據輸出,需要在I/O CLOCK和CS_N的控制下才能進行。

芯片示意圖:

0f63ccea-2c0a-11ee-a368-dac502259ad0.png

從圖中可以看出,參考電壓是模數轉換的一個標準,CS_N和I/O CLOCK給到邏輯控制和輸出計數。數據通過一個輸出寄存器給到一個并串轉換的模塊。DATA_OUT數據是給到我們的FPGA的,所以,對于我們來說需要做的就是輸出CS_N和I/O CLOCK的波形,同時,將給進來的數據采到。

0f8ece54-2c0a-11ee-a368-dac502259ad0.png

上圖為驅動的時序圖,可以看到,當數據輸出的時候,CS_N為低電平,總共輸出8bit,輸出完之后,CS_N拉高。我們在做驅動時??梢詫⒁淮无D換過程看成一個周期,后續也是重復過程。那么,我們就需要搞清楚每段時間的要求,有助于我們寫驅動。

0fc571f2-2c0a-11ee-a368-dac502259ad0.png

在上圖中,我們可以知道:

1、CS_N從拉低到第一bit數據出現在數據線上的時間最大為1.4us。

2、CS_N從拉低到第一個時鐘上升沿出現,時間最小為1.4us。

3、I/O CLOCK頻率最大為1.1MHz。為了方便計算,我們采取1MHz。

4、Tconv轉換時間最大為17us。

5、CS_N拉高時間最小為17us。

在知道了以上信息后,我們開始寫驅動,首先新建一下工程。

0fefcac4-2c0a-11ee-a368-dac502259ad0.png

100eea26-2c0a-11ee-a368-dac502259ad0.png

選擇好之后點擊完成,新建文件寫代碼。

10337e86-2c0a-11ee-a368-dac502259ad0.png

10566eb4-2c0a-11ee-a368-dac502259ad0.png

代碼如下:

1   module TLC549_driver(
2     
3     input   wire          clk,
4     input   wire          rst_n,
5     
6     output  reg           ad_clk,
7     output  reg           ad_cs_n,
8     input   wire          ad_data,
9     
10    output  reg    [7:0]  data
11  );
12
13    parameter   t = 1300;
14
15    reg     [10:0]    cnt;
16    reg     [7:0]     data_temp;
17    
18    always @ (posedge clk, negedge rst_n)
19    begin
20    if(rst_n == 1'b0)
21      cnt <= 11'd0;
22    else if(cnt == t - 1)
23      cnt <= 11'd0;
24    else
25      cnt <= cnt + 1'b1;
26    end
27    
28    always @ (posedge clk, negedge rst_n)
29    begin
30    if(rst_n == 1'b0)
31      begin
32      ad_clk <= 1'b0;
33      ad_cs_n <= 1'b1;
34      data_temp <= 8'd0;
35      data <= 8'd0;
36      end
37    else
38      case(cnt)
39      0   : begin ad_cs_n <= 1'b0; ad_clk <= 1'b0; end
40      74  : begin ad_clk <= 1'b1; data_temp[7] <= ad_data; end
41      99  : begin ad_clk <= 1'b0; end
42      124 : begin ad_clk <= 1'b1; data_temp[6] <= ad_data; end
43      149 : begin ad_clk <= 1'b0; end
44      174 : begin ad_clk <= 1'b1; data_temp[5] <= ad_data; end
45      199 : begin ad_clk <= 1'b0; end
46      224 : begin ad_clk <= 1'b1; data_temp[4] <= ad_data; end
47      249 : begin ad_clk <= 1'b0; end
48      274 : begin ad_clk <= 1'b1; data_temp[3] <= ad_data; end
49      299 : begin ad_clk <= 1'b0; end
50      324 : begin ad_clk <= 1'b1; data_temp[2] <= ad_data; end
51      349 : begin ad_clk <= 1'b0; end
52      374 : begin ad_clk <= 1'b1; data_temp[1] <= ad_data; end
53      399 : begin ad_clk <= 1'b0; end
54      424 : begin ad_clk <= 1'b1; data_temp[0] <= ad_data; end
55      449 : begin ad_clk <= 1'b0; ad_cs_n <= 1'b1; end
56      1299: begin data <= data_temp; end
57      default : ;
58      endcase
59    end
60    
61  endmodule

代碼寫好之后,我們做一下仿真看一下數據能否被正確采集,代碼如下:

1   `timescale 1ns / 1ps
2 
3   module TLC549_driver_tb;
4 
5     reg         clk;
6     reg         rst_n;
7     
8     wire        ad_clk;
9     wire        ad_cs_n;
10    reg         ad_data;
11    
12    wire  [7:0] data;
13    
14    initial begin
15    clk = 0;
16    rst_n = 0;
17    ad_data = 0;
18    #100;
19    rst_n = 1;
20    #1000;
21    ad_data = 1;     //10100110
22    #1000;
23    ad_data = 0;
24    #1000;
25    ad_data = 1;
26    #1000;
27    ad_data = 0;
28    #1000;
29    ad_data = 0;
30    #1000;
31    ad_data = 1;
32    #1000;
33    ad_data = 1;
34    #1000;
35    ad_data = 0;
36    #20000;
37    $stop;
38    end
39
40    always #10 clk = ~clk;
41    
42    TLC549_driver TLC549_driver_inst(
43    
44    .clk          (clk),
45    .rst_n        (rst_n),
46    
47    .ad_clk       (ad_clk),
48    .ad_cs_n      (ad_cs_n),
49    .ad_data      (ad_data),
50    
51    .data         (data)
52  );
53    
54  endmodule

編譯無誤,打開波形觀察。

106b7c00-2c0a-11ee-a368-dac502259ad0.png

仿真中給出的數據位8’b10100110,換算成16進制為8’ha6。與波形中顯示一致,仿真正確。

責任編輯:彭菁

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

    關注

    3

    文章

    106

    瀏覽量

    28628
  • 驅動設計
    +關注

    關注

    1

    文章

    108

    瀏覽量

    15206
  • Vivado
    +關注

    關注

    18

    文章

    791

    瀏覽量

    65388
  • TCL549
    +關注

    關注

    0

    文章

    2

    瀏覽量

    3051
收藏 人收藏

    評論

    相關推薦

    TclVivado中的基礎應用

    Xilinx的新一代設計套件Vivado相比上一代產品ISE,在運行速度、算法優化和功能整合等很多方面都有了顯著地改進。但是對初學者來說,新的約束語言XDC以及腳本語言Tcl的引入則成為了快速掌握Vivado使用技巧的最大障礙,
    的頭像 發表于 09-14 09:09 ?1606次閱讀

    TCL 定制 Vivado 設計實現流程

    今天推出Xilinx已發布的《Vivado使用誤區與進階》系列:用TCL定制Vivado設計實現流程。 上一篇《Tcl
    發表于 06-28 19:34

    FPGA零基礎學習Vivado-TLC549驅動設計

    及打算進階提升的職業開發者都可以有系統性學習的機會。 系統性的掌握技術開發以及相關要求,對個人就業以及職業發展都有著潛在的幫助,希望對大家有所幫助。本次帶來Vivado系列,TLC549驅動
    發表于 08-16 19:57

    Vivado設計之Tcl定制化的實現流程

    其實TclVivado中還有很多延展應用,接下來我們就來討論如何利用Tcl語言的靈活性和可擴展性,在Vivado中實現定制化的FPGA設計流程。 基本的FPGA設計實現流程 FPGA
    發表于 11-18 01:48 ?3377次閱讀
    <b class='flag-5'>Vivado</b>設計之<b class='flag-5'>Tcl</b>定制化的實現流程

    Vivado下利用Tcl腳本對綜合后的網表進行編輯過程

    在ISE下,對綜合后的網表進行編輯幾乎是不可能的事情,但在Vivado下成為可能。VivadoTcl的支持,使得Tcl腳本在FPGA設計中有了用武之地。本文通過一個實例演示如何在
    發表于 11-18 03:16 ?7069次閱讀
    在<b class='flag-5'>Vivado</b>下利用<b class='flag-5'>Tcl</b>腳本對綜合后的網表進行編輯過程

    TclVivado中的基礎應用

    Xilinx的新一代設計套件Vivado相比上一代產品ISE,在運行速度、算法優化和功能整合等很多方面都有了顯著地改進。但是對初學者來說,新的約束語言XDC以及腳本語言Tcl的引入則成為了快速掌握
    發表于 11-18 03:52 ?4743次閱讀
    <b class='flag-5'>Tcl</b>在<b class='flag-5'>Vivado</b>中的基礎應用

    VivadoTCL腳本語言基本語法介紹

    TCL腳本語言 Tcl(Tool Command Language)是一種很通用的腳本語言,它幾乎在所有的平臺上都可以解釋運行,而且VIVADO也提供了TCL命令行。最近發現
    發表于 04-11 12:09 ?9359次閱讀

    如何使用Tcl命令語言讓Vivado HLS運作

    了解如何使用Tcl命令語言以批處理模式運行Vivado HLS并提高工作效率。 該視頻演示了如何從現有的Vivado HLS設計輕松創建新的Tcl批處理腳本。
    的頭像 發表于 11-20 06:06 ?2958次閱讀

    TclVivado中的基礎應用及優勢

    實際上Tcl的功能可以很強大,用其編寫的程序也可以很復雜,但要在Vivado或大部分其它EDA工具中使用,則只需掌握其中最基本的幾個部分
    的頭像 發表于 07-24 16:52 ?3253次閱讀
    <b class='flag-5'>Tcl</b>在<b class='flag-5'>Vivado</b>中的基礎應用及優勢

    FPGA設計中TclVivado中的基礎應用

    Tcl介紹 Vivado是Xilinx最新的FPGA設計工具,支持7系列以后的FPGA及Zynq 7000的開發。與之前的ISE設計套件相比,Vivado可以說是全新設計的。無論從界面
    的頭像 發表于 11-17 17:32 ?2229次閱讀

    使用Tcl命令保存Vivado工程

    一個完整的vivado工程往往需要占用較多的磁盤資源,少說幾百M,多的甚至可能達到上G,為節省硬盤資源,可以使用Tcl命令對vivado工程進行備份,然后刪除不必要的工程文件,需要時再恢復即可。
    的頭像 發表于 08-02 15:01 ?4014次閱讀

    TCL定制Vivado設計實現流程

    今天推出Xilinx已發布的《Vivado使用誤區與進階》系列:用TCL定制Vivado設計實現流程。
    的頭像 發表于 05-05 09:44 ?799次閱讀
    用<b class='flag-5'>TCL</b>定制<b class='flag-5'>Vivado</b>設計實現流程

    Vivado設計套件Tcl命令參考指南

    電子發燒友網站提供《Vivado設計套件Tcl命令參考指南.pdf》資料免費下載
    發表于 09-14 10:23 ?1次下載
    <b class='flag-5'>Vivado</b>設計套件<b class='flag-5'>Tcl</b>命令參考指南

    Vivado設計套件用戶指南:使用Tcl腳本

    電子發燒友網站提供《Vivado設計套件用戶指南:使用Tcl腳本.pdf》資料免費下載
    發表于 09-14 14:59 ?0次下載
    <b class='flag-5'>Vivado</b>設計套件用戶指南:使用<b class='flag-5'>Tcl</b>腳本

    Vivado Design Suite用戶指南:使用Tcl腳本

    電子發燒友網站提供《Vivado Design Suite用戶指南:使用Tcl腳本.pdf》資料免費下載
    發表于 09-13 15:26 ?0次下載
    <b class='flag-5'>Vivado</b> Design Suite用戶指南:使用<b class='flag-5'>Tcl</b>腳本
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>