一、实验任务

通过tcl549AD转换芯片将模拟电压信号转换为数字信号,并通过串口显示到电脑上。此AD转换芯片为串行转换芯片,且转换速率要和串口选择的速率匹配。等待串口发送完后,再进行下一次AD转换。就实际应用而言,此转换速率有点低。

二、代码开发

根据AD芯片的芯片手册编写程序。以下为顶层程序。

  1. //将实时转换的数字结果通过串口传输到PC上
  2. module adc_top
  3. (
  4. clk,
  5. rst,
  6. ad_cs_out,//--TLC549片选信号
  7. ad_clk_out,//--TLC549时钟信号
  8. ad_data_in,//--TLC549数字的输入
  9. txd_out //--串口输出
  10. );
  11.  
  12. input clk,rst,ad_data_in;
  13. output ad_cs_out,ad_clk_out,txd_out;
  14.  
  15. reg ad_cs_out,ad_clk_out;
  16. wire clk_100k,txd_out;
  17. reg [:] cnt;
  18. reg [:] addata;
  19.  
  20. wire TxClk,TxFinish;
  21. reg XmitPlus;
  22.  
  23. //416分频的,产生115200的时钟
  24. defparam Gen_RxClk.divdFACTOR=,Gen_RxClk.divdWIDTH=;//分频时钟
  25. gen_divd Gen_RxClk(.reset(rst),.clkin(clk),.clkout(TxClk));//端口名称关联
  26.  
  27. //480分频的,产生100k的时钟
  28. defparam Gen_100k.divdFACTOR=,Gen_100k.divdWIDTH=;//分频时钟
  29. gen_divd Gen_100k(.reset(rst),.clkin(clk),.clkout(clk_100k));//端口名称关联
  30.  
  31. //串口发送
  32. uart_t UartTx(.Bclk(TxClk),.Resett(rst),.Txd(txd_out),
  33. .XmitCmdp(XmitPlus),.TxdBuf(addata),.TxDone(TxFinish));
  34.  
  35. always @(posedge clk_100k or negedge rst)
  36. begin
  37. if(!rst)
  38. begin
  39. cnt<='d0;
  40. ad_cs_out<='b1;
  41. ad_clk_out<='b0;
  42. XmitPlus<='b0;
  43. end
  44. else
  45. begin
  46. cnt<=cnt+'b1;
  47. case(cnt)
  48. :begin ad_cs_out<='b0;ad_clk_out<=1'b0;end
  49. :begin ad_clk_out<='b1;end
  50. :begin addata[]<=ad_data_in;ad_clk_out<='b0;end
  51. :begin ad_clk_out<='b1;end
  52. :begin addata[]<=ad_data_in;ad_clk_out<='b0;end
  53.  
  54. :begin ad_clk_out<='b1;end
  55. :begin addata[]<=ad_data_in;ad_clk_out<='b0;end
  56. :begin ad_clk_out<='b1;end
  57. :begin addata[]<=ad_data_in;ad_clk_out<='b0;end
  58.  
  59. :begin ad_clk_out<='b1;end
  60. :begin addata[]<=ad_data_in;ad_clk_out<='b0;end
  61. :begin ad_clk_out<='b1;end
  62. :begin addata[]<=ad_data_in;ad_clk_out<='b0;end
  63.  
  64. :begin ad_clk_out<='b1;end
  65. :begin addata[]<=ad_data_in;ad_clk_out<='b0;end
  66. :begin ad_clk_out<='b1;end
  67. :begin addata[]<=ad_data_in;ad_clk_out<='b0;end
  68.  
  69. :begin ad_cs_out<='b1;end//--拉高CS,等待ADC内部转换,时间<=17us
  70. //18:;
  71. //19:;
  72. //20:;
  73. :begin XmitPlus<='b1; end
  74. //22:;
  75. :begin XmitPlus<='b0;end
  76. :
  77. begin
  78. if(TxFinish=='b1)//等待发送完成
  79. cnt<='d31;//发送完成,再按一次复位键,重新一次转换发送
  80. else
  81. cnt<='d30;
  82. end
  83.  
  84. default:;
  85. endcase
  86. end
  87. end
  88. 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. Spider爬虫 の 事

      初识Spider_Man(爬爬虫) Spider_Man_2 の requests模块   Spider_Man_3 の selenium   Spider_Man_4 の BeautifulSo ...

  2. the server responded with a status of 414 (Request-URI Too Large)

    nginx 配置不当,前端ajax调用报错: the server responded with a status of 414 (Request-URI Too Large) 浏览器F12报错如下: ...

  3. 从零开始学习前端开发 — 6、CSS布局模型

    一.css布局模型 1.流动模型(Flow) 元素在不设置css样式时的布局模型,是块元素就独占一行,是内联元素就在一行逐个进行显示 2.浮动模型(Float) 使用float属性来进行网页布局,给元 ...

  4. Bootstrap中data-src无法显示图片,但是src可以

    在学习bootstrap时,书中的源码是用的data-src来定义图像位置,但是我在使用的时候无法显示图片:data-src可以在img标签中使用来显示图片吗?我使用src可以,而是用data-src ...

  5. 手机WebApp是什么?

    手机WebApp是基于HTML5+css3开发的,一次开发,可以兼容许多的平台(android/iphone),调用本地功能(比如照相),可以用phonegap去实现,所以,是一个趋势.相比每个平台定 ...

  6. MySQL Index Merge Optimization

    Index Merge用在通过一些range scans得到检索数据行和合并成一个整体.合并可以通过 unions,intersections,或者unions-intersection运用在底层的扫 ...

  7. Do you know how many stuff inside your Google Account?

    My friend Sandy she wants me to do her a favor. She'd like to clear Hangouts chat history. I think s ...

  8. docker 安装 msyql

    **************************************************************************************************** ...

  9. BIGIP-LTM中的NAT和SNAT

      http://250688049.blog.51cto.com/643101/1095880 一.NAT(Network Address Translation)网络地址转换1.NAT简介 NAT ...

  10. Redis跟Spring整合,sentinel模式

    普通模式整合 一.在pom.xml中引入redis的依赖 <dependency> <groupId>org.springframework.data</groupId& ...