2021暑假一起练-使用小脚丫fpga实现数字电压表
在2021暑假一起练活动中, 使用小脚丫FPGA实现了一个数字电压表
标签
FPGA
暑假一起练
james
更新2021-09-11
1061
1 实现功能

FPGA是实现高速并行数字逻辑的好方法. 在本次暑假一起练活动中, 我使用小脚丫FPGA训练板, 根据电子森林上的资料实现了一个数字电压表.

2 硬件概览
FlHr5m8nSYxv5I0Pf8EoIhlOAIXp
2.1 小脚丫FPGA核心板

我使用的是小脚丫型号为STEP-MXO2-C(基于Lattice XO2-4000HC)的FPGA学习模块, 以下简称"核心板", 该核心板不用安装驱动程序, 使用USB模拟U盘的方式下载JED文件, 使用起来简单方便, 能够快速上手.

快速上手文档的地址是 https://www.stepfpga.com/doc/快速上手step-mxo2-c

介绍STEP-MX02-C的文档地址是 https://www.stepfpga.com/doc/step-mxo2-c

2.2 FPGA训练版

本次活动搭配了小脚丫训练版(Training V2.1), 以下简称"训练板"

介绍训练板的文档地址是 https://www.eetree.cn/wiki/stepfpga_training_board

3 环境搭建

在小脚丫核心板上使用verilog编程, 需要安装diamond软件, 安装过程可以参考 https://www.stepfpga.com/doc/软件安装及配置

搭建完成环境, 需要学习一下verilog语言, 可以参考这个文档 https://www.eetree.cn/wiki/verilog

4 开发流程

以下为不带仿真和调试过程的最简单的开发流程:

  1. 建立工程项目
  2. 编写设计文件
  3. 综合
  4. 管脚分配
  5. 生成JEDEC文件
  6. 下载到开发板

Ftrn29BsTtNlsxOxQH7MT8lJc-ZO

 

5 设计思路
 
5.1 顶层模块

顶层模块利用oled模块, adc模块和bcd

5.3 adc模块

训练板上面有一个ADS7868单路串行ADC, 可以用来采集电压值, 使用方法可以参考这个文档 https://www.eetree.cn/wiki/voltage_meter_sadc_verilog

通过三线spi协议将采样数据串行读入, 然后通过bintobcd转码到10进制

5.4 bcd模块
6 HDL实现
6.1 top.v
module top
	(
	 input 	clk,
	 input 	rst_n,
	
	 // oled spi
	 output oled_csn,
	 output oled_rst,
	 output oled_dcn,
	 output oled_clk,
	 output oled_dat,

	 // adc spi
	 output adc_cs,
	 output adc_clk,
	 input 	adc_dat
	 );
	 

	 wire 	adc_done;
	 wire [7:0] adc_data;

	 ADS7868 adc
		 (
			.clk				  (clk),
			.rst_n				(rst_n),
			.adc_cs				(adc_cs),
			.adc_clk			(adc_clk),
			.adc_dat			(adc_dat),
			.adc_done			(adc_done),
			.adc_data			(adc_data)
			);

	 // 3.3v / 256 = 0.129
	 wire [15:0] 	bin_code = adc_data * 16'd129;
	 wire [19:0] 	bcd_code;

	 bin_to_bcd bcd
		 (
			.rst_n				(rst_n),
			.bin_code			(bin_code),
			.bcd_code			(bcd_code)
			);

	 OLED12832 oled
		 (
			.clk                (clk),
			.rst_n	            (rst_n),
			.data		            (bcd_code[19:4]),	
			.oled_clk           (oled_clk),
			.oled_csn           (oled_csn),
			.oled_dat           (oled_dat),
			.oled_dcn           (oled_dcn),
			.oled_rst           (oled_rst)
			);
endmodule
7 心得体会
  • 虽然以前学过数电, 但是并没有使用过FPGA, 本次活动让我觉得FPGA使用起来不没有那么难
  • diamond安装起来稍微比较麻烦, 但是并没有遇到无法解决得问题
  • 如果有开源的合成工具可以免安装, 直接使用的话我觉得就更好了, stepfpga好像有网页版开发工具, 但是没时间试用了, 下回可以试试看
8 常见问题
  • 复制工程目录的方法新建工程 为了快速做一些实验, 直接复制已有工程, 有时候在diamond中修改lpf文件(通过spreadsheet工具)会crash. 解决方法是: 将lpf文件删掉, 再启动diamond然后重新配置即可.
  • 设置top-level module 如果项目使用了多个文件, 没有自动识别出top-level module可以在Project->Property Page里面设置top-level module
9 Code&Future

https://github.com/picospuch/eetree-funpack-workshop/tree/phase-fpga

感谢硬禾学堂, 这个小脚丫FPGA训练套件设计得很好, 作为FPGA入门或者进行数电实验体验很好.

 

附件下载
digital-voltage-meter.tgz
团队介绍
james
团队成员
james
评论
0 / 100
查看更多
目录
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2023 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号