• 正文
    • TLC5620驅(qū)動(dòng)教程
  • 推薦器件
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

FPGA零基礎(chǔ)學(xué)習(xí)之Vivado-TLC5620驅(qū)動(dòng)教程

2023/08/04
2613
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

作者:李西銳??校對(duì):陸輝

大俠好,歡迎來到FPGA技術(shù)江湖。本系列將帶來FPGA的系統(tǒng)性學(xué)習(xí),從最基本的數(shù)字電路基礎(chǔ)開始,最詳細(xì)操作步驟,最直白的言語描述,手把手的“傻瓜式”講解,讓電子、信息、通信類專業(yè)學(xué)生、初入職場(chǎng)小白及打算進(jìn)階提升的職業(yè)開發(fā)者都可以有系統(tǒng)性學(xué)習(xí)的機(jī)會(huì)。

系統(tǒng)性的掌握技術(shù)開發(fā)以及相關(guān)要求,對(duì)個(gè)人就業(yè)以及職業(yè)發(fā)展都有著潛在的幫助,希望對(duì)大家有所幫助。本次帶來Vivado系列,TLC5620驅(qū)動(dòng)教程。話不多說,上貨。

TLC5620驅(qū)動(dòng)教程

在FPGA處理完數(shù)字信號(hào)之后,我們有些情況下是需要將數(shù)字信號(hào)轉(zhuǎn)變?yōu)?a class="article-link" target="_blank" href="/baike/1589317.html">模擬信號(hào)再輸出的。比如音頻信號(hào)在濾波后,需要轉(zhuǎn)換為聲音信號(hào)進(jìn)行輸出。此次,我們要講數(shù)字信號(hào)轉(zhuǎn)換為電壓信號(hào)進(jìn)行輸出,以便我們后續(xù)可以用示波器之類的器械觀察信號(hào)。

我們采用的芯片為TLC5620,是一款8bit四通道的數(shù)模轉(zhuǎn)換器。

在四路通道中,我們可以設(shè)置4種不同的參考電壓進(jìn)行轉(zhuǎn)換使用。但是在此次實(shí)驗(yàn)中,我們采用的四路參考電壓一樣,如下圖:

接下來我們介紹一下此芯片的一些特征以及手冊(cè)對(duì)芯片的描述。下圖為官方手冊(cè)對(duì)芯片的一段描述:

TLC5620是一款使用3線串行總線控制的芯片。11bit的命令中包含8bit數(shù)據(jù)、2bit通道選擇、1bit輸出范圍選擇bit。輸出范圍選擇,可以輸出一倍或者兩倍的參考電壓差值范圍。當(dāng)兩級(jí)鎖存器都打開時(shí),新的數(shù)據(jù)可以進(jìn)入到芯片。下圖為芯片的框圖:

端口介紹:

我們的數(shù)據(jù)為8bit,那也就是將電壓范圍劃分為256份,我們的數(shù)字信號(hào)會(huì)對(duì)應(yīng)成電壓進(jìn)行輸出,所以我們的輸出電壓的計(jì)算公式為:

接下來我們看一下時(shí)序圖

當(dāng)LOAD為高電平時(shí),數(shù)據(jù)被鎖存進(jìn)DATA在每一個(gè)時(shí)鐘下降沿,一旦數(shù)據(jù)所有的bit被采集到,LOAD被拉低,將寄存器中的數(shù)據(jù)傳輸到被選擇的DAC中。如圖一所示,當(dāng)LDAC為低電平時(shí),LOAD信號(hào)拉低,被選擇的DAC芯片輸出電壓會(huì)更新。如果LDAC為高電平,電壓更新將會(huì)被禁止,直到我們將LDAC拉低,如圖二:

對(duì)于我們的通道選擇,如下圖:

當(dāng)RNG=0時(shí),輸出電壓為一倍范圍,當(dāng)RNG=1時(shí),輸出電壓為兩倍范圍。

接下來,我們來做一下芯片的驅(qū)動(dòng),同樣可以使用線性序列機(jī)。轉(zhuǎn)換總周期為11us的時(shí)間。

首先我們先新建工程。

新建代碼文件,寫入代碼:

驅(qū)動(dòng)代碼如下:

1   module tlc5620_driver(2     3     input   wire          clk,4     input   wire          rst_n,5     input   wire    [7:0] data,6     7     output  reg           da_clk,8     output  reg           da_data,9     output  wire          da_ldac,10    output  reg           da_load11  );1213    parameter   t = 550;14    parameter   select_bit  = 2'b00;15    parameter   RNG   = 1'b1;     //0代表輸出1倍,1代表輸出兩???16    17    reg     [9:0]     cnt;18    19    assign da_ldac = 1'b0;2021    always @ (posedge clk, negedge rst_n)22    begin23    if(rst_n == 1'b0)24      cnt <= 10'd0;25    else if(cnt == t - 1)26      cnt <= 10'd0;27    else28      cnt <= cnt + 1'b1;29    end30    31    always @ (posedge clk, negedge rst_n)32    begin33    if(rst_n == 1'b0)34      begin35      da_clk <= 1'b0;36      da_data <= 1'b0;37      da_load <= 1'b1;38      end39    else40      case(cnt)41      0     : begin da_clk <= 1'b1; da_data <= select_bit[1]; da_load <= 1'b1; end42      24    : begin da_clk <= 1'b0; end43      49    : begin da_clk <= 1'b1; da_data <= select_bit[0]; end44      74    : begin da_clk <= 1'b0; end45      99    : begin da_clk <= 1'b1; da_data <= RNG; end46      124   : begin da_clk <= 1'b0; end47      149   : begin da_clk <= 1'b1; da_data <= data[7]; end48      174   : begin da_clk <= 1'b0; end49      199   : begin da_clk <= 1'b1; da_data <= data[6]; end50      224   : begin da_clk <= 1'b0; end51      249   : begin da_clk <= 1'b1; da_data <= data[5]; end52      274   : begin da_clk <= 1'b0; end53      299   : begin da_clk <= 1'b1; da_data <= data[4]; end54      324   : begin da_clk <= 1'b0; end55      349   : begin da_clk <= 1'b1; da_data <= data[3]; end56      374   : begin da_clk <= 1'b0; end57      399   : begin da_clk <= 1'b1; da_data <= data[2]; end58      424   : begin da_clk <= 1'b0; end59      449   : begin da_clk <= 1'b1; da_data <= data[1]; end60      474   : begin da_clk <= 1'b0; end61      499   : begin da_clk <= 1'b1; da_data <= data[0]; end62      524   : begin da_clk <= 1'b0; end63      529   : begin da_load <= 1'b0; end64      default : ;65      endcase66    end67   68  endmodule

 

在寫驅(qū)動(dòng)代碼時(shí),我們需要注意時(shí)序圖中的一些時(shí)間要求,比如,數(shù)字信號(hào)的建立時(shí)間和保持時(shí)間,以及l(fā)oad信號(hào)的建立時(shí)間與保持時(shí)間。時(shí)間要求如下圖:

由上圖可以得出結(jié)論,芯片的驅(qū)動(dòng)時(shí)鐘最大為1MHz。數(shù)據(jù)的建立時(shí)間與保持時(shí)間最小值都為50ns。如果我們?cè)跁r(shí)鐘上升沿發(fā)送數(shù)據(jù),那么我們發(fā)送的數(shù)據(jù),建立時(shí)間與保持時(shí)間最小值為500ns。滿足條件。

接下來我們寫一下仿真看一下波形。

代碼如下:

1   `timescale 1ns / 1ps2 3   module tlc5620_driver_tb;4 5     reg           clk;6     reg           rst_n;7     reg     [7:0] data;8     9     wire       da_clk;10    wire       da_data;11    wire       da_ldac;12    wire       da_load;1314    initial begin15      clk = 1'b0;16      rst_n = 1'b0;17      data = {$random}%256;18      #105;19      rst_n = 1'b1;20      #11000;21      repeat(10) begin22        data = {$random}%256;23        #11000;24      end25      #1000;26      $stop;27    end2829    always #10 clk = ~clk;30    31    tlc5620_driver tlc5620_driver_inst(32    33      .clk      (clk  ),34      .rst_n    (rst_n  ),35      .data      (data  ),36      37      .da_clk    (da_clk),38      .da_data    (da_data),39      .da_ldac    (da_ldac),40      .da_load    (da_load)41  );4243  endmodule

 

運(yùn)行波形,觀察仿真波形:

觀察da_clk、da_data、da_load、da_ldac波形全部正常,即說明驅(qū)動(dòng)正確。

推薦器件

更多器件
器件型號(hào) 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊(cè) ECAD模型 風(fēng)險(xiǎn)等級(jí) 參考價(jià)格 更多信息
XC7A75T-2FGG676C 1 AMD Xilinx Field Programmable Gate Array, 5900 CLBs, 1286MHz, 75520-Cell, CMOS, PBGA676, FBGA-676

ECAD模型

下載ECAD模型
$1103.58 查看
LFE3-35EA-8FN484C 1 Lattice Semiconductor Corporation Field Programmable Gate Array, 500MHz, 33000-Cell, PBGA484, 23 X 23 MM, LEAD FREE, FPBGA-484

ECAD模型

下載ECAD模型
$48.92 查看
A3P125-VQG100T 1 Microsemi FPGA & SoC Field Programmable Gate Array, 3072 CLBs, 125000 Gates, 350MHz, 3072-Cell, CMOS, PQFP100, 0.50 MM PITCH, GREEN, VQFP-100
$3.24 查看

相關(guān)推薦

登錄即可解鎖
  • 海量技術(shù)文章
  • 設(shè)計(jì)資源下載
  • 產(chǎn)業(yè)鏈客戶資源
  • 寫文章/發(fā)需求
立即登錄

任何技術(shù)的學(xué)習(xí)就好比一個(gè)江湖,對(duì)于每一位俠客都需要不斷的歷練,從初入江湖的小白到歸隱山林的隱世高人,需要不斷的自我感悟自己修煉,讓我們一起仗劍闖FPGA乃至更大的江湖。