3. 状态机A/D采样控制电路

3.1 目标:用状态机控制ADC0809实现数据采集。

3.2 ADC0809简介

(1)ADC0809是8位A/D转换器,片内有8路模拟开关,可控制8个 模拟量中 的1个进入转换器中。完成一次转换的时间约100us。含锁存控制的8个

多路开关,输出有三态缓冲器控制,单5V供电。ADC0809的外部引脚,工作时序图详见其数据手册。start是转换启动信号,高电平有效。ale是

地址锁存信号。eoc是转换状态信号,约100us,上跳沿表示转换结束。oe是输出使能。

(2)ADC0809更详细的说明可参阅数据手册和数字电路基础里的模数转换部分,比如,康华光版数电书里有讲解逐次逼近的转换原理,用天平称重

选砝码的过程来类比对分法,高位为1,先跟1/2的vref比较,然后再更加或减一半的一半比较,循环下去,8位就比较8次,得到一组8位的数字编码

对应当前输入的模拟量的最接近的值。也用到了极限的思想。这样,模拟量的输入就转换成数字量的输出了。

3.3  这个实验要实现的就是用Verilog HDL来设计一个状态机控制逻辑,控制ADC0809的时序,完成一个数据采集的功能。

(1)设计思想:研究ADC的功能描述和引脚说明,时序图,把时序分成几个状态;然后把adc的输入信号和输出信号颠倒,作为控制逻辑的输入和输出。

(2)ADC0809采样控制电路的Verilog 代码:

 1 // adc0809 control circuit
2 //2020-11-3
3 // by YongFengXie
4 module adc0809(
5 input clk,
6 input [7:0] d, //adc0809 output
7 input clr,
8 input eoc,
9 output reg ale,
10 output reg start,
11 output reg oe,
12 output adda, // LSB of the 3 input signal chanel
13 output lock0, // data lock signal
14 output [7:0] q); // output data
15 reg lock;
16 parameter s0='d0,s1='d1,s2='d2,s3='d3,s4='d4;
17 reg [2:0] current_state,next_state;
18 reg [7:0] rel;
19
20 assign adda = 0;
21 assign lock0=lock;
22 assign q=rel;
23
24 always @(posedge clk or posedge clr)
25 begin
26 if(clr)
27 current_state <= s0;
28 else
29 current_state <= next_state;
30 end
31
32 always @(posedge lock)
33 begin
34 rel <= d;
35 end
36
37 always @(current_state,eoc)
38 begin
39 case(current_state)
40 s0:begin
41 ale<=1'b0;
42 start<=1'b0;
43 lock<=1'b0;
44 oe<=1'b0;
45 next_state<=s1;
46 end
47 s1:begin
48 ale<=1'b1;
49 start<=1'b1;
50 lock<=1'b0;
51 oe<=1'b0;
52 next_state<=s2;
53 end
54 s2:begin
55 ale<=1'b0;
56 start<=1'b0;
57 lock<=1'b0;
58 oe<=1'b0;
59 if(eoc)
60 next_state<=s3;
61 else
62 next_state<=s2;
63 end
64 s3:begin
65 ale<=1'b0;
66 start<=1'b0;
67 lock<=1'b0;
68 oe<=1'b1;
69 next_state<=s4;
70 end
71 s4:begin
72 ale<=1'b0;
73 start<=1'b0;
74 lock<=1'b1;
75 oe<=1'b1;
76 next_state<=s0;
77 end
78 default:next_state<=s0;
79 endcase
80 end
81
82 endmodule
83
84

adc0809测试代码:

 1 // adc0809 control circuit testbench
2 //2020-11-3
3 // by YongFengXie
4 `timescale 1us/1us
5 module adc0809_tb;
6
7 reg clk;
8 reg [7:0] d; //adc0809 output
9 reg clr;
10 reg eoc;
11 wire ale;
12 wire start;
13 wire oe;
14 wire adda; // LSB of the 3 input signal chanel
15 wire lock0; // data lock signal
16 wire [7:0] q;
17
18 adc0809 ub(clk,d,clr,eoc,ale,start,oe,adda,lock0,q);
19
20 initial begin
21 clk=1'b0;
22 clr=1'b1;
23 d=8'b1011_1010;
24 eoc=1'b1;
25 #20 clr=1'b0;
26 #100 eoc=1'b0;
27 #150 eoc=1'b1;
28 #10 d=8'b0001_0010;
29 #500 $stop;
30 end
31
32 always #5 clk=~clk;
33
34 endmodule

仿真结果:

实验8 #第8章 Verilog有限状态机设计-3 #Verilog #Quartus #modelsim的更多相关文章

  1. 第2章 面向对象的设计原则(SOLID):2_里氏替换原则(LSP)

    2. 里氏替换原则(Liskov Substitution Principle,LSP) 2.1 定义 (1)所有使用基类的地方必须能透明地使用子类替换,而程序的行为没有任何变化(不会产生运行结果错误 ...

  2. [Python学习笔记][第五章Python函数设计与使用]

    2016/1/29学习内容 第四章 Python函数设计与使用 之前的几页忘记保存了 很伤心 变量作用域 -一个变量已在函数外定义,如果在函数内需要修改这个变量的值,并将这个赋值结果反映到函数之外,可 ...

  3. 《.NET 设计规范》第 5 章:成员设计

    <.NET 设计规范>第 5 章:成员设计 5.1 成员设计的通用规范 要尽量用描述性的参数名来说明在较短的重载中使用的默认值. 避免在重载中随意地改变参数的名字.如果两个重载中的某个参数 ...

  4. MySQL性能调优与架构设计——第 18 章 高可用设计之 MySQL 监控

    第 18 章 高可用设计之 MySQL 监控 前言: 一个经过高可用可扩展设计的 MySQL 数据库集群,如果没有一个足够精细足够强大的监控系统,同样可能会让之前在高可用设计方面所做的努力功亏一篑.一 ...

  5. MySQL性能调优与架构设计——第 17 章 高可用设计之思路及方案

    第 17 章 高可用设计之思路及方案 前言: 数据库系统是一个应用系统的核心部分,要想系统整体可用性得到保证,数据库系统就不能出现任何问题.对于一个企业级的系统来说,数据库系统的可用性尤为重要.数据库 ...

  6. MySQL性能调优与架构设计——第12章 可扩展设计的基本原则

    第12章 可扩展设计的基本原则 前言: 随着信息量的飞速增加,硬件设备的发展已经慢慢的无法跟上应用系统对处理能力的要求了.此时,我们如何来解决系统对性能的要求?只有一个办法,那就是通过改造系统的架构体 ...

  7. FPGA Prototyping By Verilog Examples第五章 状态机FSM设计

    上升沿检测电路之Moore型FSM // Listing 5.3module edge_detect_moore ( input wire clk, reset, input wire level, ...

  8. 第2章 面向对象的设计原则(SOLID):3_依赖倒置原则(DIP)

    3. 依赖倒置原则(Dependence Inversion Principle,DIP) 3.1 定义 (1)要依赖抽象,不要依赖具体的实现类.简单的说就是对抽象(或接口)进行编程,不要依赖实现进行 ...

  9. 【基本知识】FMS有限状态机设计

    有限状态机是Verilog中十分基本也是十分重要的知识.本文对有限状态机做了一个简单介绍. 1.状态机三要素 有限状态机具有三个要素:状态跳转.跳转判断.状态操作: 1)状态跳转:现态跳转到次态: 2 ...

  10. 实验六 序列信号检测器的VHDL设计

    一.实验目的 (1)进一步熟悉Quartus II软件和GW48-PK2S实验系统的使用方法: (2)用状态机实现序列检测器的设计,了解一般状态机的设计与应用 二.实验内容 1. 基本命题 利用Qua ...

随机推荐

  1. Python 合并Excel数据 (Excel文件单sheet)

    一.Python批量合并Excel数据<方法1> import pandas as pd import glob import os # 使用glob.glob函数获取指定目录下所有以.x ...

  2. ChatGPT 指令大全

    1.写报告 报告开头 我现在正在 报告的情境与目的 .我的简报主题是 主题 ,请提供 数字 种开头方式,要简单到 目标族群 能听懂,同时要足够能吸引人,让他们愿意专心听下去. 我现在正在修台大的简报课 ...

  3. FPGA中与时序有关的概念

    FPGA中与时序有关的概念 一.时序分析 时序分析是对整个时序进行分析的操作.作用就是了解设计的时序性能,一般而言就是最大时钟频率.时钟频率越高,设计的工作速度越快(忽略设计实现方法的不同导致的效率提 ...

  4. 可视化学习:实现Canvas图片局部放大镜

    前言 最近我在可视化课程中学习了如何在Canvas中利用像素处理来实现滤镜效果,在这节课程的结尾留了一道局部放大镜的题目,提示我们用像素处理的方式去实现这个效果,最终实现随着鼠标移动将图片局部放大,本 ...

  5. KingbaseES V8R6集群运维案例之---sys_monitor.sh start启动动态库错误

    案例说明: 在KingbaseES V8R6集群部署了postgis后,执行sys_monitor.sh start启动集群时,出现动态库错误,如下图所示: 适用版本: KingbaseES V8R6 ...

  6. KingbaseES 原生XML系列五--XML关系表函数

    KingbaseES 原生XML系列五--XML关系表函数(QUERY_TO_XML,TABLE_TO_XML,XMLTABLE) XML的简单使其易于在任何应用程序中读写数据,这使XML很快成为数据 ...

  7. 网络设备性能指标之pps

    基本概念: Bps:Byte per second 每秒传输多少字节 bps: bits per second 每秒传输多少位 ,这个也叫做端口速率 pps:Packet Per Second(包每秒 ...

  8. 13 CSS 的position属性

    13 CSS 的position属性 就像photoshop中的图层功能会把一整张图片分层一个个图层一样,网页布局中的每一个元素也可以看成是一个个类似图层的层模型.层布局模型就是把网页中的每一个元素看 ...

  9. #树形dp#C 树上排列

    分析 设\(dp[x][i]\)表示以\(x\)为根的子树中\(x\)的排名为\(i\)的方案数, 然后枚举子节点转移即可,Talk is cheap,Show me the code 代码 #inc ...

  10. nginx集成brotli压缩算法

    本文于2017年2月中旬完成,发布在个人博客网站上. 考虑个人博客因某种原因无法修复,于是在博客园安家,之前发布的文章逐步搬迁过来. Google开源Brotli压缩算法 Brotli是一种全新的数据 ...