数据采集传输系统VHDL

该实验使用VHDL在FPGA上实现数据采集传输系统,通过按键控制ADC采集100次数据并存储到FIFO,然后通过UART发送到PC。系统包括start模块、FIFO模块和FSM控制,采用Quartus ii 18.0和AC620 FPGA进行开发。板级验证显示,当ADC连接到不同电平时,正确地通过UART传输了对应的数据。
摘要由CSDN通过智能技术生成

实验内容

  1. 按键控制,按下ADC采集数据100次,并存储到FIFO中
  2. 从FIFO中读取数据,并通过UART发送数据到PC

实验工具

Quartus ii 18.0
AC620 FPGA

原理图

schematic
如上图所示,红线的地方是输入输出端口
start模块:控制ADC开始采样100次
ADC_driver模块:驱动ADC128S052模块进行模数转换
FIFO模块: 存储/读取ADC的100个数据
FSM模块:控制FIFO的读取以及Uart_tx模块的数据发送
Uart_tx模块:通过串口调试助手,发送数据到PC中

VHDL code

ADC模块VHDL代码实现
Uart_tx模块VHDL代码实现

上面两个模块都已经详细讲过,不再赘述。

start 模块

实现功能:

  1. 对输入的key_in进行按键消抖,同时也防止按键时间过长,导致ADC采集超过100次
  2. 控制ADC采集100次数据
按键消抖

按键消抖模块VHDL代码实现

keyin<= key_flag and ( not key_state);

key_state是按键的状态,key_flag代表到检测到稳定的上升沿/下降沿。
所以当我们botton按下的时候,key_state = 1, key_flag=1,此时形成一个高脉冲信号。

100次数据

ADC_start为ADC的使能信号,当按键按下,ADC的使能信号一直拉高,ADC采样计数信号清零;
当FIFO满了,或者采样100次之后,ADC_start拉低,ADC停止采样

------------------启动ADC采样100次--------------------
process(clk)
begin
	if(nrst = '0') then
		ADC_start	<= '0';<
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值