前几周微机课上布置了一个Project,要求用FPGA实现多路电压采集器,对多路模拟信号采集并显示其电压幅值。我们小组的设计思路是利用ADC芯片对模拟电压输入信号进行采集,转换为数字信号,然后交由FPGA进行处理,最后将处理结果通过串口传输给电脑并由串口助手显示读数。基本框图如下
经过好几天的努力,现在来做一个小小总结。
所谓多路电压采集器,指的是在同一时刻采集到的数据,虽然好多AD都能实现多路数据的采集,但大多是串行的,即采集完这一路,再采集下一路模拟信号,总是会有时间差,并非,Project的目的是用多片AD(每一片只用一路信号输入)同时采集,实现真正的多路信号同时采集,模拟量选用0~5v的电压
硬件:1.老师给发的DIGICUBE,XILINX SPARTAN3的FPGA,XC3S50,clk1=18.4320M,clk2=8M
2.AD芯片是ADC0809,淘宝直接买的模块,后期有时间自己焊电路
3.下载线,USB转串口线(用于串口通信)
软件:ISE13.3,串口助手
使用Verilog HDL
实现串口通信的代码是是学长们留下来的,稍作修改并增加注释
`timescale 1ns / 1ps // // Company: // Engineer: // // Create Date: // Design Name: // Module Name: // Project Name: // Target Devices: // Tool versions: // Description: // // Dependencies: // // Revision: // Revision 0.01 - File Created // Additional Comments: // // //同济大学11级自动化 module uart(reset, clk, rx_in, tx_out); //Port declaration //clk, reset, rx, tx input reset; input clk; input rx_in; output tx_out; //reg for tx reg [7:0] tx_reg;//发送数据寄存器,相当于buffer wire [7:0] tx_data; reg [15:0] tx_sample_cnt;//采样计数器 reg [3: