色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內(nèi)不再提示

基于TLC5620的數(shù)模轉(zhuǎn)換器設計

lPCU_elecfans ? 來源:未知 ? 作者:工程師飛燕 ? 2018-09-16 10:46 ? 次閱讀

設計背景:

數(shù)模轉(zhuǎn)換器(Digital to Analog Converter)即DAC,是數(shù)字世界和模擬世界之間的橋梁。人類生活在模擬世界中,雖然數(shù)字器件及設備的比重日益增強,但是DAC的發(fā)展仍是必不可少的。

從航空航天、國防軍事到民用通信、多媒體、數(shù)字信號處理等都涉及到DAC應用。DAC基本上由4個部分組成,即權電阻網(wǎng)絡運算放大器、基準電源和模擬開關。它是一種將二進制數(shù)字量形式的離散信號轉(zhuǎn)換成以參考電壓為基準的模擬量的轉(zhuǎn)換器。

設計原理:

本設計采用串行數(shù)/模轉(zhuǎn)換芯片TLC5620,TLC5620是一個擁有四路輸出的數(shù)/模轉(zhuǎn)換器,時鐘頻率最大可達到1MHz。TLC5620芯片接口如下:

基于TLC5620的數(shù)模轉(zhuǎn)換器設計

該芯片主要有以下特點:四通道8位電壓輸出DA轉(zhuǎn)換器、5V單電源供電、串行接口、高阻抗基準輸入、可編程1或2輸出范圍、同時更新設備、內(nèi)部上電復位、低功耗、半緩沖輸出。該芯片主要應用于:可編程電源、數(shù)字控制放大器/誤差器、移動通信、自動測試設備、研發(fā)過程檢測和控制和信號合成等。

轉(zhuǎn)換公式:V = REF*(CODE/256)* (1+RNG)

V:實際電壓;REF:基準電壓;CODE:輸入8位數(shù)據(jù);RNG:范圍。

TLC5620的接口時序如下列圖所示:

基于TLC5620的數(shù)模轉(zhuǎn)換器設計

圖1 LOAD控制更新(LDAC為低電平)

圖2 LDAC控制更新(LDAC為低電平)

圖3 LOAD控制更新(使用8位串行數(shù)據(jù),LOAD為低電平)

圖4 LDAC控制更新(使用8位串行數(shù)據(jù))

如圖1所示:當LOAD為高電平時,數(shù)據(jù)在CLK的下降沿被鎖存至DATA,只要所有數(shù)據(jù)被鎖存,則將LOAD拉低,將數(shù)據(jù)從串行輸入寄存器傳送到所選擇的DAC。

如圖2所示:串行編程期間LDAC為高電平,數(shù)據(jù)在LOAD為低電平時進行鎖存,當LDAC變?yōu)榈碗娖綍r傳送至DAC輸出。如圖3、4所示:輸入數(shù)據(jù)最高位(MSB)在前,數(shù)據(jù)傳輸使用兩個8個時鐘周期。

在本設計中運用的是圖1的工作時序:

數(shù)據(jù)通道選擇:

RNG:控制DAC輸出范圍。當RNG為低時,輸出范圍在基準電壓和GND之間;當RNG為高時,輸出范圍為兩倍的基準電壓和GND。

設計架構圖:

本設計驅(qū)動TLC5620將輸入的數(shù)字量轉(zhuǎn)換為實際的模擬量(電壓),通過四個按鍵控制四路輸出的電壓變化,每按一次,電壓值也隨之上升,同時在數(shù)碼管上也依次顯示相應的值(依次為A1,A0,RNG,輸入DATA)。本設計采用的開發(fā)板的基準電壓為2.5V。設計架構圖如下所示:

key_test模塊通過四個按鍵輸入的值,組合輸出兩個數(shù)據(jù),11位的wr_data是TLC_DA模塊解碼所需的數(shù)據(jù)。20位的out_data是seg_num模塊數(shù)碼管顯示所需的數(shù)據(jù)。

設計代碼:

key_test模塊代碼如下:

0modulekey_test(//按鍵控制模塊

1//端口信號:模塊的輸入輸出接口

2inputclk,//50MHZ

3inputrst_n,//低電平復位

4input[3:0]key,//四個按鍵組合信號

5

6output[10:0]wr_data,//輸出一幀數(shù)據(jù),為DA模塊的輸入數(shù)字量

7output[19:0]out_data //輸出數(shù)碼管顯示數(shù)據(jù)

8);

9

10//計數(shù)器時鐘分頻

11reg[30:0]cnt;

12regclk_r;//分頻時鐘:在消除抖動的時鐘頻率下進行按鍵的檢測

13always@(posedgeclkornegedgerst_n)//按鍵消抖,時間為0.2s進行一次檢測

14if(!rst_n)

15begin

16cnt<=?0;

17clk_r<=?0;

18end

19elseif(cnt

20cnt<=?cnt?+?1'b1;

21else

22begin

23cnt<=?0;

24clk_r<=?~clk_r;

25end

26

27//按鍵為低電平有效,當檢測到對應按鍵之后,相應數(shù)值加1,并顯示相應的通道

28reg[7:0]data;//按鍵輸入數(shù)據(jù)

29reg[1:0]channel;//通道選擇

30reg[7:0]key1,key2,key3,key4;//相應四個按鍵

31always@(posedgeclk_rornegedgerst_n)

32if(!rst_n)

33begin

34key1<=?8'h00;

35key2<=?8'h00;

36key3<=?8'h00;

37key4<=?8'h00;

38data<=?8'h00;

39channel<=?2'b00;

40end

41else

42case(key)

434'b1110:begin//按鍵1:選擇通道A,且輸入數(shù)字量加1

44channel<=?2'b00;

45key1<=?key1?+?1'b1;

46data<=?key1;

47end

484'b1101:begin//按鍵2:選擇通道B,且輸入數(shù)字量加1

49channel<=?2'b01;

50key2<=?key2?+?1'b1;

51data<=?key2;

52end

534'b1011:begin//按鍵3:選擇通道C,且輸入數(shù)字量加1

54channel<=?2'b10;

55key3<=?key3?+?1'b1;

56data<=?key3;

57end

584'b0111:begin//按鍵4:選擇通道D,且輸入數(shù)字量加1

59channel<=?2'b11;

60key4<=?key4?+?1'b1;

61data<=?key4;

62end

63default:;

64endcase

65

66//用賦值語句將需要的數(shù)據(jù)組合起來,在此例中將RNG默認為1

67assignwr_data={channel,1'b1,data};assignout_data={{3'b000,channel[1]},3'b000,channel[0],4'h1,data};

68

69endmodule

TLC_DA模塊代碼如下:

0moduleTLC_DA(//輸入數(shù)字量轉(zhuǎn)換為模擬量模塊,本實驗用TLC5620

1//端口信號:模塊的輸入輸出接口

2inputclk,//系統(tǒng)時鐘50MHz

3inputrst_n,//低電平復位

4input[10:0]data_in,//輸入一幀數(shù)據(jù)

5outputda_data,//串行數(shù)據(jù)接口

6outputda_clk,//串行時鐘接口

7outputregda_ldac,//更新控制信號

8outputregda_load//串行加載控制接口

9);

10

11//計數(shù)器時鐘分頻:根據(jù)芯片內(nèi)部的時序要求進行分頻

12reg[30:0]cnt;

13wireda_clk_r;//TLC 5620內(nèi)部時鐘信號

14always@(posedgeclkornegedgerst_n)//滿足協(xié)議中的時鐘要求,在TLC 5620中時鐘要求不大于1MHZ

15if(!rst_n)

16cnt<=?6'd0;

17else

18cnt<=?cnt?+?1'b1;

19

20assignda_clk_r=cnt[5];

21

22//接收時序狀態(tài)機

23reg[2:0]state;

24reg[3:0]cnt_da;

25regda_data_r;

26regda_data_en;//限定da_data,da_clk的有效區(qū)域

27always@(posedgeda_clk_rornegedgerst_n)

28if(!rst_n)

29begin

30state<=?0;

31cnt_da<=?0;

32da_load<=?1;

33da_ldac<=?0;???????????

34da_data_r<=?1'b1;

35da_data_en<=?0;

36end

37else

38case(state)

390:state<=?1;

401:begin

41da_load<=?1;

42da_data_en<=?1;

43if(cnt_da<=?10)

44begin

45cnt_da<=?cnt_da?+?1'b1;

46case(cnt_da)

470:da_data_r<=?data_in[10];

481:da_data_r<=?data_in[9];

492:da_data_r<=?data_in[8];

503:da_data_r<=?data_in[7];

514:da_data_r<=?data_in[6];

525:da_data_r<=?data_in[5];

536:da_data_r<=?data_in[4];

547:da_data_r<=?data_in[3];

558:da_data_r<=?data_in[2];

569:da_data_r<=?data_in[1];

5710:da_data_r<=?data_in[0];

58default:;

59endcase

60state<=?1;

61end

62else

63begin

64cnt_da<=?0;

65state<=?2;

66da_data_en<=?0;

67end

68end

692:begin

70da_load<=?0;

71state<=?3;

72end

733:begin

74da_load<=?1;

75state<=?0;

76end

77default:state<=?0;

78endcase

79

80assignda_data=(da_data_en)?da_data_r:1'b1;

81assignda_clk=(da_data_en)?da_clk_r:1'b0;

82

83endmodule

seg_num模塊代碼如下:

0moduleseg_num(//數(shù)碼管顯示模塊:選擇數(shù)碼管0-4共5個數(shù)碼管顯示{A1,A0,RNG,DATA}

1//端口信號:模塊的輸入輸出接口

2inputclk,//系統(tǒng)時鐘50MHz

3inputrst_n,//低電平復位

4input[19:0]data_in,//20位輸入數(shù)據(jù)

5

6outputreg[7:0]seg,//數(shù)碼管段選

7outputreg[2:0]sel//數(shù)碼管位選

8);

9

10//通過查找表的方式,將相應位的數(shù)碼管與數(shù)據(jù)的相應位一一對應

11reg[3:0]num;

12always@(*)

13case(sel)

144:num=data_in[3:0];//第五個數(shù)碼管顯示數(shù)據(jù)的低四位[3:0]

153:num=data_in[7:4];//第四個數(shù)碼管顯示數(shù)據(jù)的低四位[7:4]

162:num=data_in[11:8];//第三個數(shù)碼管顯示數(shù)據(jù)的低四位[11:8]

171:num=data_in[15:12];//第二個數(shù)碼管顯示數(shù)據(jù)的低四位[15:12]

180:num=data_in[19:16];//第一個數(shù)碼管顯示數(shù)據(jù)的低四位[19:16]

19default:;

20endcase

21

22//通過查找表的方式,將數(shù)據(jù)與數(shù)碼管的顯示方式一一對應

23always@(*)

24case(num)

250:seg<=?8'hC0;???//8'b1100_0000

261:seg<=?8'hF9;???//8'b1111_1001

272:seg<=?8'hA4;??//8'b1010_0100 ?

283:seg<=?8'hB0;???//8'b1011_0000

294:seg<=?8'h99;???//8'b1001_1001

305:seg<=?8'h92;???//8'b1001_0010

316:seg<=?8'h82;???//8'b1000_0010

327:seg<=?8'hF8;???//8'b1111_1000

338:seg<=?8'h80;???//8'b1000_0000

349:seg<=?8'h90;???//8'b1001_0000

35default:seg<=?8'hFF;?//8'b1111_1111

36endcase

37

38//計數(shù)器時鐘分頻:用cnt第10位的變化作為分頻時鐘

39reg[23:0]cnt;

40always@(posedgeclkornegedgerst_n)

41if(!rst_n)

42cnt<=?4'd0;

43else

44cnt<=?cnt?+?1'b1;

45//在分頻時鐘下,數(shù)碼管的0-5位依次循環(huán)

46always@(posedgecnt[10]ornegedgerst_n)//分頻時鐘為2^10/50M

47if(!rst_n)

48sel<=?0;

49elseif(sel

50sel<=?sel?+?1'b1;

51else

52sel<=?0;???

53

54endmodule

top頂層模塊代碼如下:

0moduletop(//頂層模塊:將各個模塊組合

1//外部接口

2inputclk,//系統(tǒng)時鐘50MHz

3inputrst_n,//低電平復位

4input[3:0]key,//四個按鍵組成的按鍵信號,低電平有效

5

6outputda_data,//DA串行接口數(shù)據(jù)

7outputda_clk,//DA串行接口時鐘

8outputda_ldac,//DA更新信號

9outputda_load,//DA串行接口加載控制信號

10output[7:0]seg,//數(shù)碼管段選

11output[2:0]sel//數(shù)碼管位選

12);

13//內(nèi)部信號:模塊內(nèi)部的接口信號,比如模塊TLC_DA的輸出信號data_in,通過內(nèi)部信號r_data與模塊key_test的輸入信號wr_data相連

14wire[10:0]wr_data;

15wire[19:0]out_data;//輸入給數(shù)碼管的數(shù)據(jù)

16

17//模塊例化

18TLC_DATLC_DA_inst(//輸入數(shù)字量轉(zhuǎn)換為模擬量模塊

19.clk(clk),

20.rst_n(rst_n),

21.da_clk(da_clk),

22.da_data(da_data),

23.da_ldac(da_ldac),

24.da_load(da_load),

25.data_in(wr_data)

26);

27

28key_testkey_test_inst(//按鍵控制模塊

29.clk(clk),

30.rst_n(rst_n),

31.key(key),

32.wr_data(wr_data),

33.out_data(out_data)

34);

35

36seg_numseg_num_inst(//數(shù)碼管顯示模塊

37.clk(clk),

38.rst_n(rst_n),

39.data_in(out_data),

40.seg(seg),

41.sel(sel)

42);

43

44endmodule

test頂層模塊測試代碼:

0`timescale1ns/1ns//設置仿真時間單位與精度分別為1ns/1ns

1//若設為`timescale 1ns/1ps (#200就是延時200 ns; 1ps就是仿真的精度)

2moduletest;//測試模塊:主要是將激勵信號賦相應的值,仿真之后觀察波形,驗證與實際功能是否一樣

3

4//端口信號定義,激勵信號為reg型

5regclk;

6regrst_n;

7reg[3:0]key;

8wire[7:0]seg;

9wire[2:0]sel;

10

11//模塊例化

12toptop(

13.clk(clk),

14.rst_n(rst_n),

15.key(key),

16.seg(seg),

17.sel(sel)

18);

19

20//初始化激勵,以及給相應激勵賦值

21initial

22begin

23clk=0;rst_n=0;key=4'b1111;//在復位階段,將激勵賦初值

24

25#200rst_n=1;//在延時200ns后將復位信號置為1

26

27//實現(xiàn)按鍵1開,關

28#500000key=4'b1110;

29#500000key=4'b1111;

30

31end

32

33always#10clk=~clk;//時鐘的表示,即每隔10ns翻轉(zhuǎn)一次,一個周期的時間即為20ns,時鐘為1/20ns = 50MHZ

34

35endmodule

仿真圖:

由于仿真時間原因,這里只測試按鍵1按下時的數(shù)碼管顯示,顯示為00100,表示通道A,RNG為1,輸入數(shù)字量為00。之后實際下板驗證,用萬用表也可測出輸入數(shù)字量對應的電壓值。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴

原文標題:【FPGA學習】一文教你輕松實現(xiàn)數(shù)模轉(zhuǎn)換的設計

文章出處:【微信號:elecfans,微信公眾號:電子發(fā)燒友網(wǎng)】歡迎添加關注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關推薦

    源碼系列:基于FPGA的數(shù)模轉(zhuǎn)換(DA)設計

    轉(zhuǎn)換器。 設計原理 本設計采用串行數(shù)/模轉(zhuǎn)換芯片TLC5620,TLC5620是一個擁有四路輸出的數(shù)/模轉(zhuǎn)換器,時鐘頻率最大可達
    發(fā)表于 05-14 15:09

    數(shù)模轉(zhuǎn)換器TLC5615的輸出做基準電壓,紋波太大怎么處理?

    需要用數(shù)模轉(zhuǎn)換器TLC5615的輸出做基準電壓,紋波太大,有一百多mV,很什么好的濾波方法,或者有那款數(shù)模轉(zhuǎn)換器輸出紋波可以保持在20mV之內(nèi)。
    發(fā)表于 11-05 18:31

    【小梅哥FPGA進階教程】第三章 TLC5620型DAC驅(qū)動設計

    三、TLC5620型DAC驅(qū)動設計TLC5620型DAC芯片概述:lTLC5620C是一個具有4個獨立8位電壓輸出型DAC的數(shù)模轉(zhuǎn)換器l單電源5V供電l采用串行接口時序l具備4個高阻抗
    發(fā)表于 01-10 18:58

    請問tlc5620四通道怎么同時輸出

    請問tlc5620四通道怎么同時輸出,類似的dac方法也可以,求借鑒
    發(fā)表于 09-11 16:14

    TLC5620型DAC驅(qū)動設計

    三、TLC5620型DAC驅(qū)動設計TLC5620型DAC芯片概述: lTLC5620C是一個具有4個獨立8位電壓輸出型DAC的數(shù)模轉(zhuǎn)換器l單電源5V供電l采用串行接口時序l具備4個高阻
    發(fā)表于 01-29 03:12

    TLC5620芯片有何作用

    TLC5620芯片,TLC5620內(nèi)部有4個DAC,全部都是8位電壓輸出型。每個DAC有一個高輸入阻抗的參考電壓輸入端口,每個DAC可以輸出一倍或者兩倍的參考電壓與GND之間的電壓值
    發(fā)表于 07-29 09:03

    串行數(shù)模轉(zhuǎn)換器TLC5620I與TMS320F2812接口設

    串行數(shù)模轉(zhuǎn)換器TLC5620I與TMS320F2812接口設計  1 引言   近年來,數(shù)字信號處理(DSP)的應用越來越廣泛,其中TMS320F2812作為目前數(shù)字控制領域
    發(fā)表于 02-01 10:52 ?2545次閱讀
    串行<b class='flag-5'>數(shù)模轉(zhuǎn)換器</b><b class='flag-5'>TLC5620</b>I與TMS320F2812接口設

    基于TLC5620信號發(fā)生的設計

    分析了TI公司的4路串行8位數(shù)/模轉(zhuǎn)換器TLC5620的功能、特點、工作原理,提出了一種以芯片TLC5620和EPM3128為核心設計低頻函數(shù)信號發(fā)生的方法,給出了具體的硬件連接框圖
    發(fā)表于 06-21 16:40 ?119次下載
    基于<b class='flag-5'>TLC5620</b>信號發(fā)生<b class='flag-5'>器</b>的設計

    基于TLC5620的低頻函數(shù)信號發(fā)生設計

    介紹了采用TI公司的串行數(shù)模轉(zhuǎn)換芯片TLC5620和AT89C51單片機來產(chǎn)生低頻函數(shù)信號發(fā)生的一種設計方法。利用該方案產(chǎn)生的波形包括正弦波、矩形波、三角波。而且頻率可調(diào),當選擇的波
    發(fā)表于 08-22 14:49 ?126次下載
    基于<b class='flag-5'>TLC5620</b>的低頻函數(shù)信號發(fā)生<b class='flag-5'>器</b>設計

    基于單片TLC5620的兩組模數(shù)和數(shù)模轉(zhuǎn)換電路設計

    分析了TI公司的4路串行8位數(shù)/模轉(zhuǎn)換器(DAC)TLC5620的功能、特點、工作原理。提出了一種由單片TLC5620組成的兩組模/數(shù)、數(shù)/模轉(zhuǎn)換電路的設計,給出了該電路的硬件接線和軟
    發(fā)表于 08-25 16:22 ?169次下載
    基于單片<b class='flag-5'>TLC5620</b>的兩組模數(shù)和<b class='flag-5'>數(shù)模</b><b class='flag-5'>轉(zhuǎn)換</b>電路設計

    TLC5620英文

    TLC5620數(shù)據(jù)手冊,又需要 的可以下來看看。
    發(fā)表于 12-16 22:19 ?0次下載

    MS5620數(shù)模轉(zhuǎn)換器概述、特點及應用

    瑞盟 MS5620 是一款具有高阻抗緩沖基準輸入的四通道串行 8 位電壓輸出數(shù)模轉(zhuǎn)換器(DAC)。完美替代TLC5620
    的頭像 發(fā)表于 07-22 16:03 ?1579次閱讀
    MS<b class='flag-5'>5620</b><b class='flag-5'>數(shù)模轉(zhuǎn)換器</b>概述、特點及應用

    瑞盟模數(shù)轉(zhuǎn)換器MS5620,兼容替代TLC5620

    瑞盟模數(shù)轉(zhuǎn)換器MS5620,兼容替代TLC5620
    發(fā)表于 12-07 15:52 ?0次下載

    瑞盟模數(shù)轉(zhuǎn)換器MS5620,兼容替代TLC5620 4 通道 8 位數(shù)模轉(zhuǎn)換器

    瑞盟模數(shù)轉(zhuǎn)換器MS5620,兼容替代TLC56204通道8位數(shù)模轉(zhuǎn)換器
    發(fā)表于 12-07 16:02 ?0次下載

    基于FPGA的TLC5620數(shù)模轉(zhuǎn)換(DA)設計

    本設計采用串行數(shù)/模轉(zhuǎn)換芯片TLC5620,TLC5620是一個擁有四路輸出的數(shù)/模轉(zhuǎn)換器,時鐘頻率最大可達到1MHz。
    發(fā)表于 04-08 10:13 ?1638次閱讀
    基于FPGA的<b class='flag-5'>TLC5620</b><b class='flag-5'>數(shù)模</b><b class='flag-5'>轉(zhuǎn)換</b>(DA)設計
    主站蜘蛛池模板: XXX老姥群交| 欧美5g影院天天爽天天看| 特黄大片aaaaa毛片| 国产三级影院| 在线免费观看国产视频| 麻豆高清免费国产一区| 成人欧美尽粗二区三区AV| 香蕉精品国产自在现线拍| 久久观看视频| YELLOW视频直播在线观看高清| 小柔的性放荡羞辱日记| 久久精品视频15人人爱在线直播| www黄色大片| 侮辱丰满美丽的人妻| 快乐激情站| 国产精品99| 91九色视频在线观看| 双性大乳浪受噗呲噗呲h总| 久久精品亚洲精品国产欧美| 超碰99热在线精品视频| 一本道的mv中文字幕| 日本三级床震| 久久这里有精品| 国产精品久久久久久久久爆乳| 中文字幕不卡一区二区三区| 综合人妻久久一区二区精品| 天天操狠狠操夜夜操| 老头狠狠挺进小莹体内视频| 国产精品成人不卡在线观看| a4you销魂gogo人体| 一本久道视频无线视频| 人人澡人人爽人人精品| 久草色在线| 国产精品久久久久精品A片软件| 中文字幕偷乱免费视频在线| 亚洲2017天堂色无码| 全部免费特黄特色大片看片| 久久视频这里只精品99热在线 | 68日本xxxxxxxx79| 亚洲春色AV无码专区456| 日本高清色片|