首页 电路文章正文

vhdl状态机ad采样控制电路实现 vhdl状态机设计

电路 2022年11月17日 13:30 10 银路电子网

本篇文章给大家谈谈vhdl状态机ad采样控制电路实现,以及vhdl状态机设计对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

用verilog写了个状态机,实现ad采集的时序控制。给出convst后,检测busy,要是为低,就拉低RD,读出数据

4个建议:

1、第二行“nest_states”命名错误。

2、状态机的迁移最好加上复位,如下:

always @ (posedge clk or negedge rst)

if (!rst)

state = IDLE;

else

state = next_state;

3、状态机的第二段可以采用组合逻辑写,always(*)是可以的,但是严禁在同一个组合逻辑always模块里同时出现= 和=,改成都用=。

4、硬件描述语言,最好用1'b1,1'b0把位宽也描述上而不要用直接用1,0。

VHDL能调AD转换器的采样精度和采样率吗?是怎么调的?

实际上,采样率不必太高。根据采样定理,采样频率是信号最大频率的两倍就足够了。根据你的情况,采样频率200Hz就够了(当然为了方便,也可以过采样,400Hz就够了)。串行通信的波特率足以实时传输信号。比如采样位数是16位,常用的9600就可以了。

如何设计AD采样保护电路

老实说:用AD做充电保护电路实在是太奢侈vhdl状态机ad采样控制电路实现vhdl状态机ad采样控制电路实现,也只有高级电源或者高校里会有人这么做。一般工程上通用电源都用模拟电路来做充电保护电路vhdl状态机ad采样控制电路实现,又便宜又方便。

具体操作大致是:在电源vhdl状态机ad采样控制电路实现的输出端,并接一个电阻支路,大概由2-4个电阻串联而成,从中间抽头,然后根据你需要vhdl状态机ad采样控制电路实现的电源电压计算电阻的具体阻值,使这个抽头的电压变动范围在0-5V之间(根据最基本的电路分析定理,这个电阻抽样网路中点电压会随着电源电压变化而变化),电阻必须选用精密电阻。然后把这个抽头的电压送AD和单片机进行转换和比较,把控制信息通过单片机的管脚输出,驱动MOS管或者继电器导通或截断充电回路。

再告诉你一个模电做的办法,一般是用基准电源TL431之类和电压比较器做,抽样电阻网络也同样,但成本省得多,只有AD方法的几分之一。

基于FPGA的AD0809采样控制器设计 仿真代码

实验一 用状态机实现ADC0809的采样控制电路

一、实验目的:

学习用状态机对A/D转换器ADC0809的采样控制电路的实现。

二、原理说明:

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

主要控制信号说明:如图1所示,START是转换启动信号,高电平有效;ALE是3位通道选择地址(ADDC、ADDB、ADDA)信号的锁存信号。当模拟量送至某一输入端(如IN1或IN2等),由3位地址信号选择,而地址信号由ALE锁存;EOC是转换情况状态信号(类似于AD574的STATUS),当启动转换约100us后,EOC产生一个负脉冲,以示转换结束;在EOC的上升沿后,若使输出使能信号OE为高电平,则控制打开三态缓冲器,把转换好的8位数据结果输至数据总线。至此ADC0809的一次转换结束了。

图1

三、实验内容:

1、利用MAX+plusII对例3-1进行文本编辑输入和仿真测试;给出仿真波形。最后进行引脚锁定并进行测试,硬件验证例3-1电路对ADC0809的控制功能。

2、根据附图2-12,建议引脚锁定为:START接PIO34,OE接PIO35,EOC接PIO8,ALE接PIO33,状态机时钟CLK接clock0(PIN2,可选“65536Hz”或更高),ADDA接PIO32(ADDB和ADDC都接GND),ADC0809的8位输出数据线接PIO23~PIO16,锁存输出Q显示于数码8/数码7(PIO47~PIO40)。

3、设目标器件是EPF10K10,建议选择实验电路结构图NO.5(即结构图NO.5A,ADC0809的转换时钟CLK已经事先接有750KHz的频率),将实验系统左下角选择插针处的“转换结束”和“A/D使能”用二短路帽短接。下载目标文件后,可用螺丝刀旋转实验系统左下角的电位器,以便为ADC0809提供变化的待测模拟信号,这时数码管8和7将显示ADC0809采样输出并被锁存的数字值(16进制)。

【例3-1】

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY ADCINT IS

PORT ( D

: IN STD_LOGIC_VECTOR(7 DOWNTO 0); --0809的8位转换数据输出

CLK ,EOC : IN

STD_LOGIC; --CLK是转换工作时钟

LOCK1, ALE, START, OE, ADDA : OUT STD_LOGIC;

Q

: OUT STD_LOGIC_VECTOR(7 DOWNTO 0)

);

END ADCINT;

ARCHITECTURE behav OF ADCINT

IS

TYPE states IS (st0, st1,

st2, st3,st4,st5,st6) ; --定义各状态子类型

SIGNAL current_state, next_state: states

:=st0 ;

SIGNAL REGL : STD_LOGIC_VECTOR(7 DOWNTO 0);

SIGNAL LOCK : STD_LOGIC; -- 转换后数据输出锁存时钟信号

BEGIN

ADDA = '1'; LOCK1 =LOCK;

PRO: PROCESS(current_state,EOC) BEGIN

--规定各状态转换方式

CASE current_state IS

WHEN st0 =

ALE='0';START='0';OE='0';LOCK='0' ;next_state = st1;

WHEN st1 =

ALE='1';START='0';OE='0';LOCK='0' ;next_state = st2;

WHEN st2 =

ALE='0';START='1';OE='0';LOCK='0' ;next_state = st3;

WHEN st3 =

ALE='0';START='0';OE='0';LOCK='0';

IF (EOC='1') THEN next_state =

st3; --测试EOC的下降沿

ELSE next_state =

st4;

END IF ;

WHEN st4=

ALE='0';START='0';OE='0';LOCK='0';

IF (EOC='0') THEN next_state = st4; --测试EOC的上升沿,=1表明转换结束

ELSE next_state =

st5; --继续等待

END IF ;

WHEN st5=

ALE='0';START='0';OE='1';LOCK='0';next_state = st6;

WHEN st6=

ALE='0';START='0';OE='1';LOCK='1';next_state = st0;

WHEN OTHERS =

ALE='0';START='0';OE='0';LOCK='0';next_state = st0;

END CASE ;

END PROCESS PRO ;

PROCESS (CLK)

BEGIN

IF ( CLK'EVENT AND CLK='1') THEN

current_state = next_state; -- 在时钟上升沿,转换至下一状态

END IF;

END PROCESS;

-- 由信号current_state将当前状态值带出此进程,进入进程PRO

PROCESS (LOCK) -- 此进程中,在LOCK的上升沿,将转换好的数据锁入

BEGIN

IF LOCK='1' AND LOCK'EVENT THEN REGL = D ;

END IF;

END PROCESS ;

Q = REGL;

END behav;

四、思考题:

在不改变原代码功能的条件下将例3-1表达成用状态码直接输出型的状态机。

五、实验报告:

根据以上的实验要求、实验内容和实验思考题写出实验报告。

写到这里,本文关于vhdl状态机ad采样控制电路实现和vhdl状态机设计的介绍到此为止了,如果能碰巧解决你现在面临的问题,如果你还想更加了解这方面的信息,记得收藏关注本站。

标签: vhdl状态机ad采样控制电路实现

发表评论

抹茶交易所Copyright www.xjyinlu.com Some Rights Reserved. 2005-2023 本站所有信息均来自网络,为个人学习、研究、欣赏使用。投资有风险,选择需谨慎