这篇日志是本阶段最后一篇关于接口通信的实例
后续将把学习重心放在硬件设计和存储 显示上面
本文分三部分
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源代码
sunyzz 2015-5-21 20:56
用户1831468 2015-5-20 10:08
用户1790792 2015-4-18 10:40