数字逻辑、可编程逻辑及FPGA

小脚丫FPGA学习平台介绍

小脚丫FPGA学习平台是摩尔吧孵化器专门针对FPGA初学者打造的一款性价比最高、学习门槛最低的学习模块,它以Lattice Semiconductor公司XO2-4000器件为核心,具有开关、按键输入以及单色LED、三色LED以及2个发光数码馆进行显示。其封装方式兼容标准的DIP40封装,能够直接插在面包板上或以模块的方式放置在其它电路板上以即插即用的方式,大大简化系统的设计。

功能介绍

  1. 食指大小——目前最小的FPGA开发板,尺寸52mm*18mm,即插即用;
  2. USB供电,自带板载编程器,无需额外配置FPGA下载线
  3. LCMXO2-1200,性价比最高最适合的FPGA芯片
  4. 既可作学习数字逻辑的FPGA开饭,也可作核心功能模块使用,适合各种DIY和原型设计
  5. 丰富的实例、代码支持

硬件连接

  1. FPGA芯片:LCMXO2-1200HC-4MG132
  2. USB 5V供电
  3. 25MHz时钟
  4. 3个LED,一路电源指示,两路用户LED
  5. 2个按键
  6. 2个RGB LED
  7. 一路I2C接口
  8. SPI接口(可设主从模式)
  9. JTAG接口
  10. 29个GPIO接口

使用方法

上电测试。Step FPGA开发板通过USB供电,采用了常见Micro USB接口。一般的安卓手机USB线均可使用。开发板出厂内置测试程序,上电后:

  1. Step FPGA开发板连接USB电源,电源指示灯点亮。
  2. 两个用户LED灯交替闪烁,间隔0.5秒。
  3. RGB LED闪烁分两种模式,上电默认流水灯模式。
    1. 流水灯:RGB LED交替闪烁红绿蓝。
    2. 交通灯:两个RGB LED异步闪烁红绿蓝,如同交通信号。
  4. 按键K2切换RGB LED显示模式。
  5. 按键K1用于复位功能。

扩展应用

Lattice Diamond综合开发环境

经典案例

组合逻辑

  1. 点亮LED灯:掌握LED的工作原理以及通过PWM控制LED灯的亮度

时序逻辑

  1. 轮流点亮的流水灯:掌握时钟分频、时序控制
  2. 能够控制亮度的呼吸灯:通过PWM来控制LED灯的亮度
  3. 旋转编码器控制:通过相位检测

状态机

测试测量原理相关

  1. DAC产生直流电压:通过SPI串行总线的低速数模变换器DAC得到需要的直流电压,按键更改数字参数能够改变输出直流电压的值
  2. DAC生成正弦波:通过FPGA内部寄存器或调用内部IP核将内嵌的块RAM配置成1024深度,位宽为10位的ROM存储一个周期的正弦波波形信号,逻辑控制将波形表中的每个点通过DAC输出,生成模拟的正弦波信号
  3. 任意波形产生:通过[DDS]从内建的波形表中按照相位控制字获取相应相位的波形幅度值,再通过DAC得到模拟的任意频率的信号,改变波形表中的信号波形,即可得到不同的模拟波形输出。
  4. 直流电压测量:通过SPI串行总线的低速模数变换器ADC将被测量的直流电压变换为数字量,在LED(8个)上通过点亮不同的LED显示其电压幅度,也可以通过2个7段发光数码管显示其电压值,或在LCD上以数字量的方式显示实际的电压值,将0-1023的数字量转变为0-3.3V的直流电压值。

在FPGA内通过软核构成嵌入式系统

XO2-4000内部有足够的逻辑功能构成MCU中的ALU,内部的块RAM可以构成MCU需要的内部存储寄存器,另外XO2系列有硬化的SPII2C以及定时器功能,可以构成各种8位、32位的微处理器MCU,Lattice Diamond系统自带支持Wishbone总线的8位单片机MICO8内核以及32位的MICO32内核。据说这两个内核都是来自于著名的开源硬件网站www.opencores.org,在这个网站上可以看到各种经过工程师验证过的内核,比如8051OpenRiscAVRMIPS32,有兴趣的同学可以移植到我们的小脚丫平台上。