实验目的:

用状态机控制ADC0809实现A/D转换。

实验原理:

如下图所示为状态机控制ADC0809的结构框图。

图1 采样状态机结构框图

用状态机对ADC0809进行采样控制,首先必须了解其工作时序,然后据此作出状态图,最后写出相应的Verilog代码。

ADC0809是8位CMOS A/D转换器,片内有8路模拟开关,可控制8个模拟量中的一个进入转换器中。ADC0809的分辨率为8位,转换时间约100us,含锁存控制的8路多路开关,输出有三态缓冲器控制,单5V电源供电。

如图2所示为ADC0809工作时序及引脚图。

图2 ADC0809工作时序及引脚图

如图2所示,下面对ADC0809工作时序稍加解释。

(1)START为转换启动控制信号,高电平有效;

(2)ALE为模拟信号输入选通端口地址锁存信号,上升沿有效;

(3)START信号有效后,状态信号EOC即变为低电平,表示进入转换状态,转换时间约100us。转换结束后, EOC变为高电平,控制器据此可了解转换情况。

(4)外部控制可以使OE由低电平变为高电平(输出有效),此时0809的输出数据总线D[7:0]从原来的高阻态变为输出数据有效。

根据ADC0809工作时序,可以作出控制ADC0809采样状态图,如图3所示。

图3 控制ADC0809采样状态图

如图3所示,下面对各状态稍加解释。

st0:对0809初始化;
  st1:由START、ALE发出启动采样和地址选通的控制信号,EOC由高电平变 为低电平,0809的8位数据输出端呈现高阻态“ZZ”;
  st2:采样周期中等待,等待了几个时钟周期后,EOC变为高电平,表示转换结束;
  st3:状态的输出允许OE被设置成高电平,此时0809的数据输出端D[7:0] 输出已经转换好的数据;
  st4:LOCK发出一个脉冲,其上升沿立即将D端口的数据锁入Q和REGL中。

实验内容:

一、控制器的设计仿真

控制ADC0809采样的状态机源代码,如下所示。

module control(CLK,D,EOC,RST,ALE,START,OE,ADDA,Q,LOCK_T,cs_1);//cs_1
input[7:0]  D;                          //来自ADC0809转换好的8位数据(8位二进制数)
input CLK,RST;                              //状态机工作时钟和系统复位信号
input EOC;                                  //转换状态指示,低电平表示正在转换
output reg ALE;                         //8个模拟信号通道地址锁存信号
output reg START,OE;                        //转换启动信号和数据输出三态控制信号
output[3:0] cs_1;
output ADDA,LOCK_T;                     //信号通道控制信号和锁存测试信号
output[7:0] Q;
parameter s0=0,s1=1,s2=2,s3=3,s4=4; //定义各状态子类型
reg[4:0] cs,next_state;                 //为了便于仿真显示,现状态变量名简写为cs
reg[7:0] REGL;                              //转换后数据锁存输出
reg LOCK;                                   //转换后数据输出锁存时钟信号always@(posedge CLK or posedge RST) //时序过程
beginif(RST) cs<=s0;else cs<=next_state;                //由现态变量cs将当前状态值带出过程
endalways@(cs or EOC)                      //组合过程
begincase(cs)s0:begin ALE<=0;START<=0;OE<=0;LOCK<=0;next_state<=s1; end //ADC0890初始化s1:begin ALE<=1;START<=1;OE<=0;LOCK<=0;next_state<=s2; end  //启动采样信号STARTs2:begin ALE<=0;START<=0;OE<=0;LOCK<=0;if(EOC==1'b1) next_state<=s3;                            //EOC=1表明转换结束else next_state<=s2;                                          //转换未结束,继续等待ends3:begin ALE<=0;START<=0;OE<=1;LOCK<=0;next_state<=s4; end    //开启OE,打开ADC数据口s4:begin ALE<=0;START<=0;OE<=1;LOCK<=1;next_state<=s0; end    //开启数据锁存信号default:begin ALE<=0;START<=0;OE<=0;LOCK<=0;next_state<=s0; endendcase
endalways@(posedge LOCK)   //寄存器过程
beginREGL<=D;               //在LOCK上升沿将转换好的数据锁入
end
assign ADDA=0;             //选择模拟信号进入通带IN0
assign Q=REGL;
assign LOCK_T=LOCK;        //将测试信号引出
assign cs_1=cs;            //将状态信号引出
endmodule

强调:因为本次实验牵扯到两个芯片,要理解对ADC0809来说是输入/输出,对状态机而言是输出/输入。

仿真:为了在仿真波形中看到当前状态cs的变化情况,可以增设输出cs_1,然后用 assign cs_1=cs语句,将当前状态cs的值赋给输出即可。如图4所示为控制器的仿真波形。

图4 控制器的仿真波形

二、定制锁相环:

1 )选择宏功能模块PLL-Altera PLL v13.1,为该定制宏功能模块取名为PLL50,如图5所示。

图5 定制锁相环宏功能模块

2) 在生成的Altera PLL页面,在general页面做如下设置,如图6所示。点击finish按钮后,找到PLL50模块。

图6 宏功能模块锁相环设置

3)  PLL50设置完成之后,打开PLL50.v文件,用Create/Update命令,生成其Symbol文件。

三、顶层设计

ADC0809采样控制电路顶层设计如图7所示。

图7 ADC0809控制器顶层设计

其中,控制器的工作时钟为5MHz,ADC0809的工作时钟为750KHz。

四、硬件验证

该实验可以选择电路模式5,使用ADC0809扩展模块,如图8所示。需注意:该扩展模块如果插在主系统上使用,要选择主系统的带+-12V的的插座,比如我们实验箱的实验模块3。

引脚锁定:

图8 双通道DAC和ADC标准模块

其中:标注“2”是ADC0809的模拟输入通道。标注“3”是ADC0809通道“IN0”输入的选择钮,可通过此按钮输入电压信号。因此在这个实验中我们只能通过IN0口给ADC0809输入模拟信号。标注“4”是0809的控制端口,其中有一个“CLK”端,是FPGA向0809的输入时钟端。标注“5”是0809的数据输出端。

要求:测出输出Q[7:0]分别为20、40、60、80、A0、C0、E0和FF时IN0口输入的模拟电压值,找到输入模拟电压值和输出数字量之间的关系,算出比例系数。测试方法为,测量ADC0809的26脚IN0和13脚GND之间的电压。

总结分析:

EDA(Quartus II)——ADC采样控制电路设计相关推荐

  1. [EDA]Quartus II 实验简答题

    1.使用 Quartus 编辑波形文件时,界面如下图所示,图中用方框标注的区域,名称是什么?在图中,A.B是输入端口,S是输出端口,要编辑的是哪些信号?为什么. 1.方框标注的区域称为:信号列表. A ...

  2. 【数字系统】简单逻辑电路设计:与非门/逻辑门 Quartus II 环境/Verilog 语言/编程+仿真+开发板/FPGA/CPLD/EDA

    一. 实验要求 1. 实现二输入与非门电路以及其他简单门电路: 2. 在Quartus II 环境下,运用Verilog HDL 语言进行编程开发,并完成对电路工作情况的仿真模拟: 3. 完成配置程序 ...

  3. 国产EDA工具Robei与Quartus ii联合使用(及在Rrobei设计中一些小技巧)

    背景: 集成电路设计软件目前在世界上只有几家公司在做,普遍分布在欧美等国家,中国的集成电路设计软件长期依赖于盗版和进口."工欲善其事,必先利其器",中国要想大力发展集成电路产业,首 ...

  4. EDA技术与应用上机任务 电子信息类 Quartus II或Quartus Prime D触发器、半减器、全减器、可加减控制的50进制加减计数器。

    EDA技术与应用上机任务书 上机目的 熟悉掌握Quartus II或Quartus Prime开发工具的使用. 掌握利用硬件描述语言(Verilog)设计简单程序的步骤及方法. 掌握若干组合逻辑电路及 ...

  5. 【EDA实验一】Quartus II 软件和 DE2-115 开发板 使用入门实验

    Quartus II 软件和 DE2-115 开发板 使用入门实验 文章目录 一.实验目的 二.实验任务及要求 三.实验原理与步骤 四.实验结果与分析 一.实验目的 熟悉 Quartus II 开发环 ...

  6. A/D采样控制电路设计---VHDL

    一.实验目的 (1)了解一般状态机的设计与应用 (2)学习并掌握Quartus II的使用方法 (3)学习简单时序电路的设计和硬件测试. (3)学习使用VHDL 语言方法进行逻辑设计输入 (3)掌握利 ...

  7. EDA大作业:霓虹灯电路设计

    题目六:霓虹灯电路设计(平台实现)★ 1)使用平台上的8个七段数码管进行显示,即围绕平台上的8个数码管转圈: 2)要求同时显示的段数为1.2.3段可选: 3)可进行顺向.逆向显示(通过某一开关键进行选 ...

  8. 基于Quartus II软件FPGA与PC之间的串行通信系统开发(9000+字)

    1.简介与仿真结论 随着集成电路技术的发展,电子设计自动化(EDA)逐渐成为重要的设计手段,已经广泛应用于模拟与数字电路系统等许多领域.电子设计自动化是一种实现电子系统或电子产品自动化设计的技术,它与 ...

  9. 【原创】Quartus II 实验流程说明书

    [原创]Quartus II  实验流程说明书 Abstract 本说明书详细介绍了如何使用Quartus II进行建立工程.HDL文件输入.编译.仿真.引脚锁定.配置FPGA等实验流程.并且就学生在 ...

最新文章

  1. topcoder srm 694 div1 -3
  2. TPYBoard开发板搭建与阿里云服务发送数据
  3. MinGW下静态编译、链接Qt 5.0
  4. 平衡二叉树 构造方法
  5. 计算机丢失shlwapi,请教高手提示shlwapi.dll错误应该怎么处理?
  6. 通俗地理解什么是编程语言
  7. 连接MySQL和连接文件夹区别_JDBC与JNDI这两种连接方式有什么区别?
  8. SQL函数学习 之 DENSE_RANK() OVER (PARTITION BY col2 ORDER BY col3 DESC) AS seq
  9. mysql中的事务_mysql中的事务,你理解嘛?
  10. 使用java7的try-resource-with语法用httpclient抓取网页并用jsoup获取网页对象
  11. ATF(ARM Trusted firmware)完成启动流程
  12. Edit Control最简单使用
  13. 神经网络与深度学习第2章:机器学习概述 阅读提问
  14. AIML相关内容学习整理
  15. MATLAB小技巧(14)三角函数作图
  16. c语言prime函数怎么用_用一个自动关机小程序小试牛刀,玩转C语言System函数,边学边玩...
  17. 洛谷4234最小差值生成树题解(最小生成树+LCT)
  18. 支付宝支付流程 及简单实现
  19. 经验总结|一个移动端数据产品的设计思路
  20. 百度地图Polyline画直线

热门文章

  1. html5 闪光,人脸检测的JavaScript / HTML5 /闪光[关闭](Face detection jav
  2. 程序员常用十大算法(上)
  3. springboot:spring-boot-starter-parent 导包失败 “not found【暂且弃坑】
  4. 基于ATMEGA8A_AVR单片机及MAX6675的K型热电偶proteus仿真
  5. Vue的模态框中实现 根据详细地址定位经纬度
  6. 井贤栋专访:新技术和全球化是蚂蚁金服未来投资重点
  7. Json对象的对写(Jackson使用)
  8. GIS应用水平考试2013年度第一次全国统一考试
  9. CSS权重问题导致的盒子右边距无法清除
  10. 计算机二级证书有什么用?为什么国二证书必须要拿到呢