**这是本文档旧的修订版!**

计算器扩展功能模块

小脚丫FPGA计算器模块是STEP团队推出的可配合小脚丫FPGA核心板和底板使用的扩展板卡,基于该板卡可以实现一个简易计算器的所有功能。

计算器模块结构组成

计算器模块结构如下图所示,主要由触摸按键、触摸检测芯片CAP1298、12832 LCD显示屏和DIP接口等四部分组成。

该模块PCB做有20个触摸按键,其中触摸检测芯片选用了Microchip的电容触摸控制器CAP1298,该触摸芯片具有8路触摸按键检测功能,因此采用了3片CAP1298来检测20个触摸按键的状态。CAP1298与FPGA采用I2C总线的通信方式传输按键状态。显示屏选用了晶联讯电子公司的128
32的单色点阵液晶模块JLX12832G-520,内置驱动芯片,FPGA可以通过串行接口驱动该模块显示1616汉字或168字符。模块采用了Arduino的标准接口,完全兼容Arduino UNO接口。

计算器功能设计

该模块配合小脚丫FPGA的核心板和Arduino扩展底板可以实现一个简易计算器的加减乘除功能,LCD可以显示12位数字。

硬件资源介绍

触摸检测

触摸按键检测部分采用Microchip公司的电容触摸控制器CAP1298,该芯片内置电容触摸检测和校准功能,每个芯片可以独立检测8路的触摸按键容值变化并将检测结果保存在内部的寄存器中,可以通过SMBUS或标准的I2C总线来读写芯片内的寄存器值。 芯片内部有众多的参数设置和状态寄存器,但是大部分寄存器在出厂时已经设置了默认值,一般情况下无需重新设置就可以使用。我们只需要操作00h Main Control寄存器和03h Sensor Input Status 两个寄存器就可以实现触摸按键的检测工作。
Main Control寄存器控制芯片的电源状态和指示中断状态。Sensor Input Status寄存器返回采样电容触摸传感器输入值,每一位对应一个触摸按键通道的返回值,当一个通道的触摸按键被触摸时,03h寄存器对应位会被置1,同时产生中断,当01h主控制器的INT位被清零时,该状态位会被清零。 FPGA使用I2C总线操作步骤:首先读取03h地址寄存器值,如果03h寄存器的值不是0,则表示有对应位的按键被触摸,然后向00h地址寄存器写00h,则将03h清零,以便下一次检测。

显示模块

显示模块选用了晶联讯电子公司的12832的单色点阵液晶模块JLX12832G-520,内置矽创公司的驱动芯片ST7567,FPGA可以通过串行接口驱动该模块显示1616汉字或16*8字符。 CS是LCD的片选信号,低电平有效,CS信号为低时LCD可以被驱动。 RST是复位信号,低电平有效,上电时需要将该信号置低以对LCD复位。 SCK和SDA分别是串行时钟和串行数据,符合SPI时序。 RS是数据和命令选择信号,RS为低时,表示写指令到LCD,RS为高时,表示写数据到LCD。

接口

该计算器模块需要小脚丫FPGA核心板和Arduino底板配合使用,扩展接口按照Arduino接口标准设计,所以该板也可以配合Arduino开发板使用。

引脚对应表

使用示例

相关知识点

演示程序

演示程序分为Lattice MXO2、Intel MAX10和arduino三个版本,使用时请根据所使用的板子和FPGA型号选择。
step-calculator-mxo2.zip
step-calculator-max10.rar
step-calculator-arduino参考代码.rar

原理图说明

PCB布局布线

参考文档