热度 24
2013-9-10 13:57
12182 次阅读|
1 个评论
这篇日志是本阶段最后一篇关于接口通信的实例 后续将把学习重心放在硬件设计和存储 显示上面 本文分三部分 1,AD转换分析 2,我的github搜集的verilog源码大放送(目前两百多兆大概300个实例均来自网络,辅助资料陆续汇总中) 3,AD DA源码 第一部分:ADC dac AD DA转换在嵌入式系统中也是经常需要使用的测量和波形产生手段 现在大部分的单片机和ARM都已经内置了10-16位的高速AD转换器且使用简单通道数也比较多。 这里举一个fpga驱动TL549的adc转换的例子学习下 和前面介绍的SPI IICUART来讲 AD DA相对来说比较简单 da转换 不再做详细解释看下数据手册基本上就能理解可参考 http://hi.baidu.com/rabbitmysx/item/f04272ea9e1ba2e2fb42ba2f 先看下TL549的参数 TL549 8位单输入逐次逼近式AD转换器 内部4M时钟 IO最大速度I,IMHZ 正基准电压输入2.5V≤REF+≤Vcc+0.1。 负基准电压输入端-0.1V≤REF-≤2.5V。 VCC 系统电源3v≤Vcc≤6v。 GND 接地端。 /CS芯片选择输入端 DATA OUT 转换结果数据串行输出端与TTL电平兼容输出时高位在前,低位在后。 ANALOGIN模拟信号输入端 REF-≤ANALOGIN≤Vcc 当ANALOGIN≥REF+电压时转换结果为全“1”(0FFH)ANALOGIN≤REF-电压时转换结果为全“0”(00H)。 I/O CLOCK外接输入/输出时钟输入端,无需与芯片内部系统时钟同步. TLC549器件工作时序 当/CS变为低电平后TLC549芯片被选中同时前次转换结果的最高有效位MSBA7自DATA OUT端输出 接着要求自I/O CLOCK端输入8个外部时钟信号前7个I/O CLOCK 信号的作用是配合TLC549输出前次转换结果的A6-A0位(下降沿发送数据)并为本次转换做准备 在第4个I/O CLOCK信号由高至低的跳变之后,片内采样/保持电路对输入模拟量采样开始 第8个I/O CLOCK信号的下降沿使片内采样/保持电路进入保持状态并启动A/D开始转换。 转换时间为36个系统时钟周期最大为17us。直到A/D转换完成前的这段时间内TLC549的控制逻辑要求: 或者/CS保持高电平,或者I/O CLOCK时钟端保持36个系统时钟周期的低电平。 所以在自TLC549的I/O CLOCK端输入8个外部时钟信号期间需要完成以下工作 读入前次转换结果 对本次转换的输入模拟信号采样并保持 启动本次A/D转换开始 这个例子IO时钟为200Khz 在某次的时钟下降沿将cs拉低并开始从data线上获取数据 每个下降沿到下一个下降沿之间获取一次数据 转换收到的数据并显示到LED数码管 第二部分 verilog实例汇总( 如侵犯到代码作者权利请及时联系我 ) 学习期间我也买了些书 从图书馆 网络等地方获取了一些源代码 现汇总起来上传到github供fpga学习爱好者学习交流 我不保证代码都全部正确 所以学习之前自己做判断 使用方法很简单 1 你可以在网页上直接学习源代码 2 也可以打包成ZIP下载到你的电脑上学习 3 还可以使用git clone到你的电脑 这样我的代码只要更新 你就会获得最新的代码 我的verilog-example 仓库 javascript:void(0);/*1378526084816*/ verilogHDL 设计与实战 https://github.com/sheepsleep/Verilog-HDL-design-and-training 第三部分 AD DA源代码