欢迎来到天天文库
浏览记录
ID:46807931
大小:69.71 KB
页数:5页
时间:2019-11-28
《基于FPGA verilog的数模转换》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、数模转换先介绍一下DAC7512。DAC7512是一种低功耗,12位缓冲电压输出数字到模拟转换器(DAC)。其内置的精密输出放大器允许轨到轨(即最大输出可达到参考电压)输出摆幅。DAC7512采用多功能三线串行接口,运行在高达30MHz的时钟速率,并与标准的SPI™,QSPI™,微丝™和DSP的接口兼容。其SOT-23-6封装的引脚图:引脚定义如下表:Vout芯片模拟输出电压GND器件内所有电路的地参考点Vdd供电电源,直流2.7V-5.5VDin串行数据输入SCLK串行时钟输入SYNC输入控制信号(低电平有效)DAC7512采用三线制(SYNC,SC
2、LK及DIN)串行接口,其串行写操作时序如下图所示:写操作开始前,SYNC要置低。DIN的数据在串行时钟SCLK的下降沿依次移入DAC7512的16位输入数据寄存器(DAC是在下降沿的时候采数据,所以我们应该在上升沿的时候把数据发出)。在串行时钟的第16个下降沿到来时,将最后一位移入寄存器。输入数据中包含对工作模式的设置及DAC内容的刷新,从而完成一个写周期的操作。此时,SYNC可保持低电平或置高,但在下一个写周期开始前,SYNC必须转为高电平并至少保持33ns以便使SYNC有时间产生下降沿来启动下一个写周期。若SYNC在一个写周期内转为高电平,则本次
3、写操作失败,寄存器强行复位。输入数据寄存器格式(输入的数据被装到这个寄存器里):其中第12位和第13位是模式控制位:DAC7512的输入数据寄存器宽度为16位,其中DB15、DB14是空闲位,DB13、DB12是工作模式选择位、DB11~DB0是数据位。器件内部带有上电复位电路。上电后,寄存器置0,所以DAC7512处于正常工作模式,模拟输出电压为0V。我们可以得到输入数字量与输出模拟量的对应关系:其中D为输入数字量(DB11~DB0是数据位),4096就是2的12次方(因为数据有效位就是后12位),VDD就是DAC7512的电源电压,也是它的参考电压
4、。我们在这儿列出一些参考的数字量和对应的模拟值的对应关系(DAC参考电压是3.3V):数字量输入(data_out)理论模拟输出0X02000.4125V0X04000.8250V0X08011.6509V0X09B21.9997V0X0FFF3.2993V//修改dataout的初始值就可以改变输出的模拟电压值moduledac7512(clk,rst,sync_out,sclk_out,da_data_out);inputclk,rst;outputsync_out,sclk_out,da_data_out;regsync_out,sclk_out
5、,da_data_out;regbclk;reg[15:0]dataout;reg[5:0]cnt;//40分频defparamGen_RxClk.divdFACTOR=20,Gen_RxClk.divdWIDTH=5;//分频时钟gen_divdGen_RxClk(.reset(!rst),.clkin(clk),.clkout(bclk));//端口名称关联always@(posedgebclk)beginif(!rst)beginsync_out<=1'b1;sclk_out<=1'b1;dataout<=16'h0400;//待转换数字量cnt
6、<=6'd0;endelsebegincnt<=cnt+1'b1;case(cnt)0:beginsync_out<=1'b1;sclk_out<=1'b1;end1:beginsync_out<=1'b0;end2:beginsclk_out<=1'b1;da_data_out<=dataout[15];end3:beginsclk_out<=1'b0;end4:beginsclk_out<=1'b1;da_data_out<=dataout[14];end5:beginsclk_out<=1'b0;end6:beginsclk_out<=1'b1;
7、da_data_out<=dataout[13];end7:beginsclk_out<=1'b0;end8:beginsclk_out<=1'b1;da_data_out<=dataout[12];end9:beginsclk_out<=1'b0;end10:beginsclk_out<=1'b1;da_data_out<=dataout[11];end11:beginsclk_out<=1'b0;end12:beginsclk_out<=1'b1;da_data_out<=dataout[10];end13:beginsclk_out<=1'b0;
8、end14:beginsclk_out<=1'b1;da_data_out<=dataout[
此文档下载收益归作者所有