差别
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
简易电压表设计 [2018/11/04 20:09] gongyu [实验原理] |
简易电压表设计 [2020/01/18 21:54] (当前版本) gongyu |
||
---|---|---|---|
行 1: | 行 1: | ||
- | =====简易电压表设计===== | + | ### 简易电压表设计 |
- | ----- | + | |
- | ====实验任务==== | + | --- |
+ | |||
+ | ####实验任务 | ||
* 任务:基于 STEP-MAX10M08核心板 和 STEP BaseBoard V3.0底板 完成简易电压表设计并观察调试结果 | * 任务:基于 STEP-MAX10M08核心板 和 STEP BaseBoard V3.0底板 完成简易电压表设计并观察调试结果 | ||
行 7: | 行 9: | ||
* 解析:通过FPGA编程驱动串行ADC芯片,得到数字量化的电压信息,将量化的数字信息转换成BCD码形式,同时驱动独立数码管将电压值显示出来。 | * 解析:通过FPGA编程驱动串行ADC芯片,得到数字量化的电压信息,将量化的数字信息转换成BCD码形式,同时驱动独立数码管将电压值显示出来。 | ||
- | ====实验目的==== | + | #### 实验目的 |
在基础数字电路实验部分我们已经掌握了FPGA驱动独立数码管的原理及方法,本实验主要学习模数转换器ADC的相关知识,串行([[SPI]]接口)[[ADC]]芯片ADC081S101的驱动设计,同时学习二进制数转换BCD码的设计方法。 | 在基础数字电路实验部分我们已经掌握了FPGA驱动独立数码管的原理及方法,本实验主要学习模数转换器ADC的相关知识,串行([[SPI]]接口)[[ADC]]芯片ADC081S101的驱动设计,同时学习二进制数转换BCD码的设计方法。 | ||
行 15: | 行 17: | ||
* 完成简易电压表设计实现 | * 完成简易电压表设计实现 | ||
- | ====设计框图==== | + | #### 设计框图 |
根据前面的实验解析我们可以得知,该设计可以拆分成三个功能模块实现, | 根据前面的实验解析我们可以得知,该设计可以拆分成三个功能模块实现, | ||
行 23: | 行 25: | ||
{{:7-Top-Down层次设计.png?500|Top-Down层次设计}} {{:7-模块结构设计.png?500|模块结构设计}} | {{:7-Top-Down层次设计.png?500|Top-Down层次设计}} {{:7-模块结构设计.png?500|模块结构设计}} | ||
- | ====实验原理==== | ||
- | ===ADC介绍=== | + | #### 实验原理 |
+ | |||
+ | ##### ADC介绍 | ||
数字系统,是用数字信号完成对数字量进行算术运算和逻辑运算的电路称为数字电路,或数字系统。而我们生活的世界是模拟的,想要让数字系统帮我们处理我们模拟世界的问题,就需要一个桥梁来沟通数字系统和模拟系统。 | 数字系统,是用数字信号完成对数字量进行算术运算和逻辑运算的电路称为数字电路,或数字系统。而我们生活的世界是模拟的,想要让数字系统帮我们处理我们模拟世界的问题,就需要一个桥梁来沟通数字系统和模拟系统。 | ||
行 47: | 行 50: | ||
* 串行ADC(以ADC081S101为例)与数字电路接口为三根线(cs,clk,din),兼容三线SPI总线,cs为芯片使能管脚,clk为芯片时钟管脚,din为芯片数据管脚,当ADC芯片使能时每个clk周期从din采集1bit的数据,但是根据ADC081S101的时序,需要16个clk完成一次采样,所以clk频率至少等于采样率的16倍。 | * 串行ADC(以ADC081S101为例)与数字电路接口为三根线(cs,clk,din),兼容三线SPI总线,cs为芯片使能管脚,clk为芯片时钟管脚,din为芯片数据管脚,当ADC芯片使能时每个clk周期从din采集1bit的数据,但是根据ADC081S101的时序,需要16个clk完成一次采样,所以clk频率至少等于采样率的16倍。 | ||
- | ===ADC模块电路连接=== | + | ##### ADC模块电路连接 |
这里我们以STEP BaseBoard V3.0底板上的ADC模块电路,其电路图如下: | 这里我们以STEP BaseBoard V3.0底板上的ADC模块电路,其电路图如下: | ||
行 55: | 行 58: | ||
如ADC模块电路所示,[[FPGA]]直接连接ADC081S101芯片的控制端,ADC有6个管脚,3脚Vin为VCC和Vref功能复用,即Vin = VCC = Vref。ADC前端是运放电路LMV721,运放模块为电压跟随电路,再往前端是一个跳冒排针,用来选择ADC采样信号的来源,当短路帽将1、2脚短路时,ADC采集电位计电压,当短路帽将2、3脚短路时,ADC采射频端子或P4排针信号。本设计我们是采样旋转编码器的电压,所以需要用短路帽将1、2脚短路。 | 如ADC模块电路所示,[[FPGA]]直接连接ADC081S101芯片的控制端,ADC有6个管脚,3脚Vin为VCC和Vref功能复用,即Vin = VCC = Vref。ADC前端是运放电路LMV721,运放模块为电压跟随电路,再往前端是一个跳冒排针,用来选择ADC采样信号的来源,当短路帽将1、2脚短路时,ADC采集电位计电压,当短路帽将2、3脚短路时,ADC采射频端子或P4排针信号。本设计我们是采样旋转编码器的电压,所以需要用短路帽将1、2脚短路。 | ||
- | ===ADC模块驱动设计=== | + | ##### ADC模块驱动设计 |
前面我们了解ADC081S101芯片和FPGA之间连接有三根线(cs、clk、din),兼容[[SPI]]总线,SPI是串行外设接口(Serial Peripheral Interface)的缩写。SPI是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线(cs、sck、mosi、miso),事实上3根也可以(单向传输时),占用管脚少节约了芯片的管脚,同时为PCB的布局上节省空间,正是出于这种简单易用的特性,如今越来越多的芯片集成这种通信协议。 | 前面我们了解ADC081S101芯片和FPGA之间连接有三根线(cs、clk、din),兼容[[SPI]]总线,SPI是串行外设接口(Serial Peripheral Interface)的缩写。SPI是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线(cs、sck、mosi、miso),事实上3根也可以(单向传输时),占用管脚少节约了芯片的管脚,同时为PCB的布局上节省空间,正是出于这种简单易用的特性,如今越来越多的芯片集成这种通信协议。 | ||
行 152: | 行 155: | ||
</code> | </code> | ||
- | ===系统总体实现=== | + | ##### 系统总体实现 |
因为需要更高的时钟供ADC模块使用,我们例化pll核得到24MHz时钟,例化PLL的方法我们在基础数字电路实验部分已经练习过,这里就简单描述一下过程 | 因为需要更高的时钟供ADC模块使用,我们例化pll核得到24MHz时钟,例化PLL的方法我们在基础数字电路实验部分已经练习过,这里就简单描述一下过程 | ||
行 254: | 行 257: | ||
{{:7-RTL设计框图.png?800|RTL设计框图}} | {{:7-RTL设计框图.png?800|RTL设计框图}} | ||
- | ====实验步骤==== | + | |
+ | #### 实验步骤 | ||
- 双击打开Quartus Prime工具软件; | - 双击打开Quartus Prime工具软件; | ||
- 新建工程:File → New Project Wizard(工程命名,工程目录选择,设备型号选择,EDA工具选择); | - 新建工程:File → New Project Wizard(工程命名,工程目录选择,设备型号选择,EDA工具选择); | ||
行 265: | 行 269: | ||
- | ====实验现象==== | + | #### 实验现象 |
将程序下载到FPGA中,P3接口用短路帽将1、2脚短路,旋转底板右上角的电位计,观察核心板数码管变化,如果有万用表可以测量P3短路处的电压,与数码管显示对比。 | 将程序下载到FPGA中,P3接口用短路帽将1、2脚短路,旋转底板右上角的电位计,观察核心板数码管变化,如果有万用表可以测量P3短路处的电压,与数码管显示对比。 |