FPGA综合实验 04 - | ADC采样控制电路设计

一、实验目的和任务

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

二、设计代码(或原理图)、仿真波形及分析

1、ADC控制电路代码

module ADC0809(D,CLK,EOC,RST,ALE,START,OE,ADDA,ADDB,ADDC,Q,LOCK_T,CLK_OUT);
  input[7:0] D;
  input CLK,RST;
  input EOC;
  output reg CLK_OUT;
  output ALE;
  output START,OE;
  output ADDA,ADDB,ADDC,LOCK_T;
  output[7:0] Q;
  reg ALE,START,OE;
  parameter s0=0,s1=1,s2=2,s3=3,s4=4;
  reg[4:0] cs, next_state;
  reg[7:0] REGL;
  reg[5:0] clki;
  reg LOCK;
  
  always @(posedge CLK)
    if(clki>10)
	 begin 
	 CLK_OUT=~CLK_OUT;
	 clki=0;
	 end
	 else
	 clki=clki+1;
	 
	 
	 
	 always @(cs or EOC) begin
	 case(cs)
	 s0:begin ALE=0;    START=0  ;  OE=0;  LOCK=0;
	              next_state <=s1; end
	 s1:begin ALE=1;    START=1  ;  OE=0;  LOCK=0;
                  next_state <=s2; end
	 s2:begin ALE=0;    START=0  ;  OE=0;  LOCK=0;	
           if(EOC==1'b1) next_state =s3;
			else next_state =s2; end
	 s3:begin ALE=0;    START=0  ;  OE=1;  LOCK=0;		
      	next_state =s4; end
	 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;   end
	endcase
end	
  always @(posedge CLK or posedge RST ) begin
  if(RST)cs<=s0;
  else cs <=next_state;end
  always @(posedge LOCK)
  if (LOCK) REGL <= D;
  assign ADDA=0;
  assign ADDB=0;
  assign ADDC=0;
  assign Q=REGL;
  assign LOCK_T=LOCK;
  endmodule
  

2、ADC控制电路仿真截图

3、ADC控制电路的仿真分析

结合代码分析,如图所示,每一个时钟上升沿都使状态机进入下一个状态,刚开始的ALE和START高电位表明状态机经过了状态s1,在给EOC输入高电位前,给D所写的值121并没有送进电路,因而Q输出为0,这是因为从状态s2到s3需要EOC信号为高电位才能进入状态s3,否则会一直停留在状态s2,当给EOC输入高电位后,此时D值为220,OE高电位处说明经过了状态s3,而其后LOCK_T输出高电位,说明变量LOCK为高电平,即经过了状态s4,此时会把D的值给读走,同时Q输出220,即D的值。

4、ADC控制电路的状态机截图及分析

 结合代码分析,如图所示,在s0状态之时,当CLK信号处于上升沿,则进入s1状态;在s1状态之时,当CLK信号处于上升沿,ALE、START输出为1,则进入s2状态;在s2状态之时,当CLK信号处于上升沿,ALE、START下拉为0,如果EOC输入为1则进入s3状态,否则仍然处于s2状态;在s3状态之时,OE输出为1,同时进入s4状态;在s4状态之时,OE、LOCK输出为1,并且重新回到s0状态;如果执行RST复位操作,无论当前处于什么状态,都回到s0状态。

  • 4
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
ADC(模数转换器)是将模拟信号转换为数字信号的电路。FPGA(现场可编程门阵列)是一种可编程逻辑器件,可以用于实现各种数字电路。将ADCFPGA结合使用可以实现高速、低功耗、高精度的数据采集系统。 下面是一个简单的ADC采样电路的示意图: ``` +--------------+ | | Analog Input | ADC | +-------------+ | | | | | +--------------+ | | +---------+ +------------+ +---+ FPGA +---+ Memory | +---------+ +------------+ ``` ADC将模拟信号转换为数字信号,FPGA负责控制ADC采样时序,并将采样到的数据存储到存储器中。下面是一个简单的基于FPGAADC采样电路的实现步骤: 1. 选择一个合适的ADC芯片,根据芯片手册设计ADC控制电路。通常需要提供时钟、启动采样、选择通道等控制信号,并读取采样结果。 2. 根据ADC采样时序设计FPGA的时序控制电路。通常需要生成时钟、启动采样、选择通道等控制信号,并读取采样结果。在设计时需要考虑到ADCFPGA的时钟频率、时序要求等因素,保证采样的准确性和可靠性。 3. 设计FPGA的存储器电路,将采样到的数据存储到存储器中。通常需要选择合适的存储器芯片,根据芯片手册设计存储器控制电路。在设计时需要考虑到存储器的容量、速度、功耗等因素,保证数据的可靠性和存储效率。 4. 编写FPGA控制程序,实现ADC和存储器的控制。通常需要使用FPGA开发工具(如Quartus)编写Verilog或VHDL代码,并进行仿真、综合和布局布线等步骤,生成FPGA的位文件。 5. 将位文件下载到FPGA芯片中,完成ADC采样电路的实现。 需要注意的是,ADC采样精度、采样速度、信噪比等参数会影响整个采样系统的性能。在选择ADCFPGA芯片时需要根据具体应用场景进行综合考虑,以满足采样要求并尽可能降低成本。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式逍遥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值