verilog实验3:AD转换后串口输出到PC端
一、实验任务
通过tcl549AD转换芯片将模拟电压信号转换为数字信号,并通过串口显示到电脑上。此AD转换芯片为串行转换芯片,且转换速率要和串口选择的速率匹配。等待串口发送完后,再进行下一次AD转换。就实际应用而言,此转换速率有点低。
二、代码开发
根据AD芯片的芯片手册编写程序。以下为顶层程序。
//将实时转换的数字结果通过串口传输到PC上
module adc_top
(
clk,
rst,
ad_cs_out,//--TLC549片选信号
ad_clk_out,//--TLC549时钟信号
ad_data_in,//--TLC549数字的输入
txd_out //--串口输出
); input clk,rst,ad_data_in;
output ad_cs_out,ad_clk_out,txd_out; reg ad_cs_out,ad_clk_out;
wire clk_100k,txd_out;
reg [:] cnt;
reg [:] addata; wire TxClk,TxFinish;
reg XmitPlus; //416分频的,产生115200的时钟
defparam Gen_RxClk.divdFACTOR=,Gen_RxClk.divdWIDTH=;//分频时钟
gen_divd Gen_RxClk(.reset(rst),.clkin(clk),.clkout(TxClk));//端口名称关联 //480分频的,产生100k的时钟
defparam Gen_100k.divdFACTOR=,Gen_100k.divdWIDTH=;//分频时钟
gen_divd Gen_100k(.reset(rst),.clkin(clk),.clkout(clk_100k));//端口名称关联 //串口发送
uart_t UartTx(.Bclk(TxClk),.Resett(rst),.Txd(txd_out),
.XmitCmdp(XmitPlus),.TxdBuf(addata),.TxDone(TxFinish)); always @(posedge clk_100k or negedge rst)
begin
if(!rst)
begin
cnt<='d0;
ad_cs_out<='b1;
ad_clk_out<='b0;
XmitPlus<='b0;
end
else
begin
cnt<=cnt+'b1;
case(cnt)
:begin ad_cs_out<='b0;ad_clk_out<=1'b0;end
:begin ad_clk_out<='b1;end
:begin addata[]<=ad_data_in;ad_clk_out<='b0;end
:begin ad_clk_out<='b1;end
:begin addata[]<=ad_data_in;ad_clk_out<='b0;end :begin ad_clk_out<='b1;end
:begin addata[]<=ad_data_in;ad_clk_out<='b0;end
:begin ad_clk_out<='b1;end
:begin addata[]<=ad_data_in;ad_clk_out<='b0;end :begin ad_clk_out<='b1;end
:begin addata[]<=ad_data_in;ad_clk_out<='b0;end
:begin ad_clk_out<='b1;end
:begin addata[]<=ad_data_in;ad_clk_out<='b0;end :begin ad_clk_out<='b1;end
:begin addata[]<=ad_data_in;ad_clk_out<='b0;end
:begin ad_clk_out<='b1;end
:begin addata[]<=ad_data_in;ad_clk_out<='b0;end :begin ad_cs_out<='b1;end//--拉高CS,等待ADC内部转换,时间<=17us
//18:;
//19:;
//20:;
:begin XmitPlus<='b1; end
//22:;
:begin XmitPlus<='b0;end
:
begin
if(TxFinish=='b1)//等待发送完成
cnt<='d31;//发送完成,再按一次复位键,重新一次转换发送
else
cnt<='d30;
end default:;
endcase
end
end
endmodule
三、感悟
通过改变开发板上的可变电阻来改变串口调试助手的显示数字,其实速率真的是很低。毕竟串口就是一个很慢的转换,115200。而AD也只分频100k。楼主正在做一个40M的AD还是并行的,不知道能不能测试成功,希望能够赶紧把这个项目结束。
verilog实验3:AD转换后串口输出到PC端的更多相关文章
- AD转换后数字量的处理
假设模拟输入电压的最大值为5V,A/D转换器件为8位转换. [该转换器的分辨率为1/2n=0.3906%.] [能分辨输入模拟电压变化的最小值为5*0.3906%=19.5mv.] 则模拟电压与数字输 ...
- s5pv210 AD转换
1:ADC:Analog-to-Digital Converter,模拟信号转数字信号,自然界一般为模拟信号,而SoC需要数字信号,所以之间通信需要ADC. 2:转换原理: 以逐次逼近式AD转换为例: ...
- java语言将任意一个十进制数数字转换为二进制形式,并输出转换后的结果
package com.llh.demo; import java.util.Scanner; /** * * @author llh * */ public class Test { /* * 将任 ...
- 在AD转换中的过采样和噪声形成
1. 直接量化的过采样AD转换 此类系统的模型可以用下图表示. 图中xa(t)是输入信号,e(t)是量化引入的噪声,xd[n]是最终得到的数字信号,包含分量xda和xde. 对于M倍过采样,信号与量化 ...
- MSP430常见问题之AD转换类
Q1:MSP430F149 AD 的输入阻抗有多大?A1:RC<2000欧*30PF Q2:MSP430 ADC12 模块的速度?A2: ADC12 的转换速率是转换所需的ADC12CLK 以及 ...
- python 27 获取时区转换后的时间
python3的datetime有timezone属性,这里介绍python2.7环境下,获取时区转换后的时间. 利用第三方插件,pytz,没有安装的话安装一下. #!/usr/bin/env pyt ...
- STC单片机串口输出ADXL335角度值
STC单片机串口输出ADXL335角度值: //***************************************************** //名称:单片机串口输出ADXL335角度值 ...
- H3C模拟器实验之网络地址转换
网络拓扑图 NOTE:各个设备的基本配置在拓扑图上已经标明(需要注意的是RTB的出接口也需要配置IP,但是使用ping -a 10.1.1.1 202.117.144.1 ping不通,这点不是很理解 ...
- 异步控制---实现函数asyncAll,在执行完传入数组中func1,func2,func3异步函数后,输出“end”
实现函数asyncAll,在执行完传入数组中func1,func2,func3异步函数后,输出"end" function func1(callback) { setTimeout ...
随机推荐
- C语言中结构体赋值问题的讨论(转载)
今天帮师姐调一个程序的BUG,师姐的程序中有个结构体直接赋值的语句,在我印象中结构体好像是不能直接赋值的,正如数组不能直接赋值那样,我怀疑这个地方有问题,但最后证明并不是这个问题.那么就总结一下C语言 ...
- 浅谈localStorage、sessionStorage 与cookie
由于工作的需要,今天使用了下localStorage.sessionStorage和cookie,感觉这玩意儿还挺好用的. 关于localStorage与sessionStorage的知识点以及用法之 ...
- python+appium+unittest
一个流行语言,一个主流工具,一个实用框架: For android 实例如下: import unittest from appium import webdriver from time impor ...
- java如何获取一个对象的大小
When---什么时候需要知道对象的内存大小 在内存足够用的情况下我们是不需要考虑java中一个对象所占内存大小的.但当一个系统的内存有限,或者某块程序代码允许使用的内存大小有限制,又或者设计一个缓存 ...
- dedecsm系统(企业简介)类单栏目模版如何修改和调用整理
作者:佚名 字体:[增加 减小] 来源:互联网 时间:01-15 17:33:07 我要评论 我们的模版里应该都有article_article.htm这个模版;article_article.htm ...
- 主题:Windows系统服务器磁盘挂载
可能很多人发现VPS重装之后D盘.E盘不见了,其实并没有不见只是磁盘未挂载,下面由小编来为大家讲讲如何挂载磁盘 远程登录服务器后,桌面上只有一个回收站的,我们在桌面空白处右键属性-->桌面--& ...
- Javascript闭包入门(译文)
前言 总括 :这篇文章使用有效的javascript代码向程序员们解释了闭包,大牛和功能型程序员请自行忽略. 译者 :文章写在2006年,可直到翻译的21小时之前作者还在完善这篇文章,在Stackov ...
- Codeforces 448 D. Multiplication Table 二分
题目链接:D. Multiplication Table 题意: 给出N×M的乘法矩阵要你求在这个惩罚矩阵中第k个小的元素(1 ≤ n, m ≤ 5·10^5; 1 ≤ k ≤ n·m). 题解: n ...
- 单KEY业务,数据库水平切分架构实践
本文将以"用户中心"为例,介绍"单KEY"类业务,随着数据量的逐步增大,数据库性能显著降低,数据库水平切分相关的架构实践: 如何来实施水平切分 水平切分后常见的 ...
- 二叉查找树C++实现
二分查找树特点: (1) 若任意节点的左子树不空,则左子树上所有结点的值均小于它的根结点的值: (2) 任意节点的右子树不空,则右子树上所有结点的值均大于它的根结点的值: (3) 任意节点的左.右子树 ...