一、实验任务

通过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端的更多相关文章

  1. AD转换后数字量的处理

    假设模拟输入电压的最大值为5V,A/D转换器件为8位转换. [该转换器的分辨率为1/2n=0.3906%.] [能分辨输入模拟电压变化的最小值为5*0.3906%=19.5mv.] 则模拟电压与数字输 ...

  2. s5pv210 AD转换

    1:ADC:Analog-to-Digital Converter,模拟信号转数字信号,自然界一般为模拟信号,而SoC需要数字信号,所以之间通信需要ADC. 2:转换原理: 以逐次逼近式AD转换为例: ...

  3. java语言将任意一个十进制数数字转换为二进制形式,并输出转换后的结果

    package com.llh.demo; import java.util.Scanner; /** * * @author llh * */ public class Test { /* * 将任 ...

  4. 在AD转换中的过采样和噪声形成

    1. 直接量化的过采样AD转换 此类系统的模型可以用下图表示. 图中xa(t)是输入信号,e(t)是量化引入的噪声,xd[n]是最终得到的数字信号,包含分量xda和xde. 对于M倍过采样,信号与量化 ...

  5. MSP430常见问题之AD转换类

    Q1:MSP430F149 AD 的输入阻抗有多大?A1:RC<2000欧*30PF Q2:MSP430 ADC12 模块的速度?A2: ADC12 的转换速率是转换所需的ADC12CLK 以及 ...

  6. python 27 获取时区转换后的时间

    python3的datetime有timezone属性,这里介绍python2.7环境下,获取时区转换后的时间. 利用第三方插件,pytz,没有安装的话安装一下. #!/usr/bin/env pyt ...

  7. STC单片机串口输出ADXL335角度值

    STC单片机串口输出ADXL335角度值: //***************************************************** //名称:单片机串口输出ADXL335角度值 ...

  8. H3C模拟器实验之网络地址转换

    网络拓扑图 NOTE:各个设备的基本配置在拓扑图上已经标明(需要注意的是RTB的出接口也需要配置IP,但是使用ping -a 10.1.1.1 202.117.144.1 ping不通,这点不是很理解 ...

  9. 异步控制---实现函数asyncAll,在执行完传入数组中func1,func2,func3异步函数后,输出“end”

    实现函数asyncAll,在执行完传入数组中func1,func2,func3异步函数后,输出"end" function func1(callback) { setTimeout ...

随机推荐

  1. 【Zigbee技术入门教程-01】Zigbee无线组网技术入门的学习路线

    [Zigbee技术入门教程-01]Zigbee无线组网技术入门的学习路线 广东职业技术学院  欧浩源 一.引言    在物联网技术应用的知识体系中,Zigbee无线组网技术是非常重要的一环,也是大家感 ...

  2. Django App(三) View+Template

    接着上一节(二)的内容,首先启动站点,通过界面添加Question和Choice两张表的数据,因为接下来,要向polls app里面添加views. 1.添加数据如下(这里是通过界面操作添加的数据) ...

  3. [学习OpenCV攻略][007][缩小图片]

    cvPryDown(输入图片,输出图片) 根据输出图片的大小,把输入图片进行压缩 cvPryUp(输入图片,输出图片) 根据输出图片的大小,把输入图片进行放大 #include "cv.h& ...

  4. React Native之使用导航器跳转页面(react-navigation)

    react-navigation是一个导航库,要使用react-navigation来实现跳转页面,首先得在项目中安装此库,由于Yarn是Facebook提供的替代npm的工具,可以加速node模块的 ...

  5. ajax跳转到新的jsp页面

    ajax可以实现局部刷新页面,即在不刷新整个页面的情况下更新页面的局部信息. 项目中遇到一个问题:在用户列表也,当点击某个按钮时需要去查询用户的信息,查询成功跳转到用户详情界面:查询失败,则在原页面弹 ...

  6. Oracle_创建用户_授予权限

    Oracle_创建用户_授予权限 --创建用户,需要足够的权限  create create user hzf identified by hzf;    --给用户bjsxt分配权限  grant ...

  7. Spark高可用集群搭建

    Spark高可用集群搭建 node1    node2    node3   1.node1修改spark-env.sh,注释掉hadoop(就不用开启Hadoop集群了),添加如下语句 export ...

  8. VUE之ECMAScript6(es6)

    es6:es:EMCAScript 6 (es2015)Emca:国际标准组织 1.常量和变量 const a = "hello" let:定义一个块级作用域的变量 需要先定义再使 ...

  9. Apache Commons介绍(转载)

    一.Commons BeanUtils说明:针对Bean的一个工具集.由于Bean往往是有一堆get和set组成,所以BeanUtils也是在此基础上进行一些包装. 二.Commons CLI说明:这 ...

  10. 20170505 PHP实践中知识点

    1.json_encode 不转义 2.empty() 与 isset() 区别 在使用 php 编写页面程序时,我经常使用变量处理函数判断 php 页面尾部参数的某个变量值是否为空,开始的时候我习惯 ...