


下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、FPGA设计中DAC7512控制的Verilog实现一,概述DAC7512是一个12-BIT,申行接口的DAC。低功耗,RAIL-TO-RAIL输出,SOT23-6封装。3线申行端口最高工作频率可以达到30MHZ,并兼容SPI,QSPI,MICROWIRE等总线。DAC7512没有专用的基准电压输入,直接把VDD和GND作为基准电压,12BIT的分辨率,其输出电压为VOUT=VDD*D/4096。其中D是12BIT电压数值。SOT23-6封装的DAC7512的引脚图如下。DAC7512具有3线申行端口,其信号定义如下所示:对DAC7512来讲,在总线上只会接收控制器发出的16BIT的数字信号(
2、2BIT无效数据,2bit控制数据和12bit(信号幅值数据)。所以对丁控制器来讲,在总线操作上,只需要申行写这一种操作。总线申行写操作在SYNC的下降沿开始。16bit的数据在SCLK的下降沿被依次送入到DAC7512内部的移位寄存器中。从功耗的角度上讲,如果SYNC在空闲状态保持低电平,则有利丁功耗的降低,但从总线操作的角度上讲,需要SYNC的下降沿来启动一次传输。下面的图和表是总线操作的时序要求:二,总线控制器的设计根据总线控制器的特性,采用状态机来实现总线控制器的设计。从上面DAC7512的操作时序上来看,用一个三状态的状态机实现总线控制器是比较好的选择。在系统初始化或者没有数据传输时
3、,系统处丁空闲状态(DAC_IDLE),为了降低功耗,在这个状态下,SYNC信号为低电平;当有数据需要传输时,先进入DAC_PRE状态,在这个状态下,使SYNC信号为高电平,DAC_PRE状态保持的时间最短为SYNC需要保持为高电平的时间,即上图的T8,在VDD为的时候,为33ns;当DAC_PRE状态结束时,进入DAC_DATA状态,在这个状态下,依次把16bit数据送到总线上去。下图是状态机状态转换图。系统初始化或者数据传输结束时,进入DAC_IDLE状态。当有数据需要传输时,进入DAC_PRE状态。在DAC_PRE状态保持的时问,根据SYNC保持高电平的时间来决定,采用一个计数器来实现保
4、持时间。系统进入DAC_DATA时,开始传输数据,当16bit数据全部传输完毕后,系统回归到IDLE状态。DAC_DATA状态下,送往总线的数据由计数器来控制,DAC_DATA状态保持的时间也由计数器控制。由丁总线上,数据在SCLK的下降沿被DAC7512锁存,所以控制器需要在SCLK的下降沿之前把数据送到总线上,并且要保证数据SETUPTIME的要求。为了便丁控制,我们采用一个比SCLK的频率高一倍,且相位相同的时钟(CLK_IN)来控制总线上数据的转换。DAC_DATA状态计数器也工作在这个时钟频率下。下面是状态机部分的verilog实现:regDA_SCLK;申口时钟,由CLK_IN二分
5、频得到,本例中CLK_IN为50MHz时钟,DA_SCLK为25MHzalways(posedgeCLK_INornegedgeRESET)beginif(RESET)DA_SCLK=1b0;elseDA_SCLK=DA_SCLK;endparameterDAC_IDLE=3b001,/系统空闲DAC_PRE=3b010,系统数据预传输状态DAC_DATA=3b100;/系统数据传输状态reg2:0DACSM,DACSMNXT;wirePHASE_DAC_IDLE=DACSM0;wirePHASE_DAC_PRE=DACSM1;wirePHASE_DAC_DATA=DACSM2;wirePHA
6、SENXT_DAC_IDLE=DACSMNXT0;wirePHASENXT_DAC_PRE=DACSMNXT1;wirePHASENXT_DAC_DATA=DACSMNXT2;reg2:0DAC_PRE_CNT;/系统预传输保持时间计数器,工作在CLK_IN时钟频率下,生成的DAC_PRE_END信号作为状态机跳转信号。always(posedgeCLK_INornegedgeRESET)beginif(RESET)DAC_PRE_CNT=3b0;elseif(PHASE_DAC_PRE)DAC_PRE_CNT=DAC_PRE_CNT+3b1;elseDAC_PRE_CNT=3b110);re
7、g7:0DAC_DATA_CNT;/DAC_DATA状态计数器,工作在CLK_IN时钟频率下,是总线上数据传输频率的两倍,所以在需要传输16bit数据的时候,该时钟需要计数到32。always(posedgeCLK_INornegedgeRESET)beginif(RESET)DAC_DATA_CNT=8b0;elseif(DAC_DATA_CNT=8d32)DAC_DATA_CNT=8d0;elseif(PHASENXT_DAC_DATA|PHASE_DAC_DATA)DAC_DATA_CNT=DAC_DATA_CNT+8b1;elseDAC_DATA_CNT=8d31);always(po
8、sedgeDA_SCLKornegedgeRESET)beginif(RESET)DACSM=DAC_IDLE;elseDACSM=DACSMNXT;endalways(DACSMorDA_DATA_ENorDAC_PRE_ENDorDAC_DATA_END)beginDACSMNXT=DACSM;case(DACSM)DAC_IDLE:if(DA_DATA_EN)DACSMNXT=DAC_PRE;elseDACSMNXT=DAC_IDLE;DAC_PRE:if(DAC_PRE_END)DACSMNXT=DAC_DATA;elseDACSMNXT=DAC_PRE;DAC_DATA:if(DAC
9、_DATA_END)DACSMNXT=DAC_IDLE;elseDACSMNXT=DAC_DATA;default:DACSMNXT=DAC_IDLE;endcaseend按之前的讨论,SYNC信号在DAC_IDLE和DAC_DATA状态下,都为低电平,在DAC_PRE状态下,为高电平。所以,用下面的逻辑生成SYNC信号。assignDA_SYNC=PHASE_DAC_IDLE1b0:(PHASE_DAC_PRE1b1:(PHASE_DAC_DATA1b0:1b1);通过一个12bit的端口向控制器写入需要送到DAC7312的数据(DA_DATA),用一个使能信号(DA_DATA_EN)表示D
10、A_DATA是否有效。同时DA_DATA_EN也作为系统有数据传输的开始信号。当DA_DATA_EN有效时,我们将DA_DATA上的数据所存到寄存器中,然后在DAC_DATA的状态下,依次将16bit数据送到总线上,verilog的逻辑实现如下所示。wireDA_DIN;reg15:0DA_DATA_CP;always(posedgeCLK_INornegedgeRESET)beginif(RESET)DA_DATA_CP=16b0;elseif(DA_DATA_EN)DA_DATA_CP=4b0,DA_DATA;elseif(PHASENXT_DAC_DATA&PHASE_DAC_DATA)|(PHASE_DAC_DATA&DAC_DATA_CNT0=1b1)DA_DATA_CP=DA
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 农发行南宁市武鸣区2025秋招群面案例总结模板
- 农发行黑河市逊克县2025秋招群面案例总结模板
- 农发行牡丹江市东宁市2025秋招群面案例总结模板
- 农发行武威市古浪县2025秋招结构化面试经典题及参考答案
- 国家能源鹤壁市淇县2025秋招笔试模拟题及答案
- 国家能源环江毛南族自治县2025秋招网申填写模板含开放题范文
- 劳务员工作总结
- 2025年荆州市广电影视文化有限公司招聘和入围模拟试卷附答案详解(突破训练)
- 2025年甘肃省平凉市崆峒区卫生健康系统临时聘用人员招聘考前自测高频考点模拟试题附答案详解(突破训练)
- 员工上半年个人工作总结15篇
- 湖南安全员c3考试试题及答案
- 地方病防治技能理论考核试题
- 四川省高等教育自学考试自考毕业生登记表001汇编
- (2024版)初级茶叶加工工理论知识考试题库(含答案)
- 北京市-实验动物上岗证培训考试题库
- 不锈钢加工及安装合同集合
- 妊娠期高血压用药
- 第十三章泌尿男性疾病
- 我不是完美小孩
- 【超星尔雅学习通】海上丝绸之路网课章节答案
- 轻钢龙骨隔断墙施工合同协议书
评论
0/150
提交评论