Basys3实验指导手册

更新时间:2023-08-07 14:20:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

Basys3实验指导手册

第一章Basys3硬件电路

Basys3是围绕着一个Xilinx Artix-7 FPGA芯片XC7A35T-1CPG236C搭建的,它提供了完整、随时可以使用的硬件平台,并且它适合于从基本逻辑器件到复杂控制器件的各种主机电路。Basys3上集成了大量的I/O设备和FPGA所需的电路,由此可以构建无数设备而不需其他器件。

主要规格/特殊功能

产品规格:

Basys3为想要学FPGA和数字电路设计的用户提供了一个理想的电路设计平台。Basys3开发板提供完整的硬件存取电路,可以完成从基本逻辑到复杂控制器的设计。四个标准扩展连接器配合用户设计的电路板,或Pmods(Digilent设计的A/D和D/A转换,电机驱动器,传感器输入等)其他功能。附带USB电缆提供电源和编程接口,使得其成为入门复杂数字电路设计系统的完美低成本平台。

关键特性:

1、33,280 个逻辑单元,六输入LUT结构

2、1,800 Kbits 快速RAM块

3、5个时钟管理单元, 均各含一个锁相环(PLL)

4、90个DSP slices

5、内部时钟最高可达450MHz

6、1个片上模数转换器(XADC)

外围设备:

1、16个拨键开关

2、16个LED

3、5个按键开关

4、4位7段数码管

5、3个Pmod连接口

6、一个专用AD信号Pmod接口

7、12位的VGA输出接口

8、USB-UART桥

9、串口flash

10、用于FPGA编程和通信的USB-JTAG口

11、可连接鼠标、键盘、记忆棒的USB口

1.1电源电路

Basys3开发板可以通过2种方式进行供电,一种是通过J4的USB 端口供电;另一种是通过J6的接线柱进行供电(5V)。通过JP2跳线帽的不同选择进行供电方式的选择。电源开关通过SW16进行控制,LD20为电源开关的指示灯。电源的电路如下图所示:

说明,如果选用外部电源(即J6)那么应该保证:1,电源电压在4.5V-5.5V 范围内;2,至少能提供1A的电流。

注意:只有在特别情况下电源电压才可以使用3.6V电压。

1.2LED灯电路

LED部分的电路如图所示。当FPGA输出为高电平时,相应的LED点亮;否则,LED 熄灭。板上配有16个LED,在实验中灵活应用,可用作标志显示或代码调试的结果显示,既直观明了又简单方便。

1.3 拨码开关电路

拨码开关的电路如图所示。在使用这个16位拨码开关时请注意一点,当开关打到下档时,表示FPGA的输入为低电平:

1.4 按键电路

按键部分的电路如图所示。板上配有5个按键,当按键按下时,表示FPGA 的相应输入脚为高电平。在学习过程中,建议每个工程都有一个复位输入,这对代码调试将大有好处:

1.5 数码管电路

数码管显示部分的电路如图所示。我们使用的是一个四位带小数点的七段共阳数码管,当我们相应的输出脚为低电平时,该段位的LED点亮。位选位也是低电平选通:

1.6 IO扩展电路

4个标准的扩展连接器(其中一个为专用AD信号Pmod接口)允许设计使用面包板、用户设计的电路或Pmods扩展Basys3板,(Pmods是价格便宜的模拟和数字I / O模块,能提供一个A/ D&D / A 转换,电机驱动器,传感器投入和许多其他功能)。

1.7 USB—UART转换电路

Basys3开发板包含由FT2232芯片搭建而成的USB—UART的转换电路。这使得你可以通过标准的Windows系统的COM端口用PC机上的应用于开发板进行通讯。在安装好驱动后,PC机可以从COM口向FPGA的B18和A18引脚发送I/O命令,从而产生串行数据通信。

Basys3开发板上提供两个状态指示灯,来提供产生数据通信时的直观视觉提示:发送数据指示灯LED(LD18)与接收数据指示灯(LD17)。

FT2232芯片同时可以用来控制USB—JTAG电路,然而两个电路的功能可以独立运行,并且两个电路同时运行时并不会相互影响。因此虽然只有一根Micro USB线,却可以同时进行程序下载、UART通讯以及供电。

1.8 FPGA调试及配置电路

上电后,Basys3板上必须配置FPGA,然后才能执行任何有用功能。在配置过程中,bit文件转移到FPGA内存单元中实现逻辑功能和电路互连。通过赛灵思公司免费的Vivado软件可以通过VHDL,Verilog语言,或基于原理图的源文件创建.bit文件。

下载程序有3种方式:

1、用Vivado通过JTAG方式下载.bit文件到FPGA芯片。

2、用Vivado通过QSPI方式下载.bit文件到Flash芯片,实现掉电不易失。

3、用U盘或移动硬盘通过J2的USB端口下载.bit文件到FPGA芯片(建议

将.bit文件放到U盘根目录下,且只放1个),该U盘应该是FAT32文件

系统。

1.9 引脚分配表格

第二章XADC实验

这一章我们将通过硬件描述语言HDL——Verilog,在Basys3上进行AD转换的实验。这个简单的XADC演示项目展示了Basys3的AD转换能力。具体行为如下:

1、随着选定的AD转换的管脚输入的电压增大,16个开发板上的LED灯从右到左依次亮起。

2、四个七段数码管显示选定通道的电压值。

3、拨码开关sw0和sw1选择输入通道。

XADC模块包括2个12比特1MIPS的模数转换器以及相关的片上传感器,模数转换器能为系统提供通用目的的高精度模拟接口。双通道ADC支持一系列操作模式,例如外部触发和对ADC进行采样。同时也支持不同类型的输入信号,例如单端输入以及差分输入,最多可接受17路外部的模拟输入信号。XADC模块也包括一定数量的片上传感器可用来测量片上的供电电压和芯片温度,这些测量转换数据存储在一个名为状态寄存器的专用寄存器内,可由FPGA内部名为动态配置端口的16位同步读写端口访问。ADC转换数据也可以由JTAG TAP访问,这种情况下并不需要去直接例化XADC模块。下图为XADC模块的框图:

在Basys3上,AD转换的Pmod连接器提供4对不同的模拟信号输入。对应的AD转换通道为6、7、14、15。下图为Pmod连接器的示意图:

每一纵排的两个端口为一组。第一组对应的是XA1_P和XA1_N,以此类推。下图展示的是这些信号内部连接图的Basys3的原理图:

由原理图可知:XA1连接到AD转换的6通道,XA2连接到AD转换的14通道,XA3连接到AD转换的7通道,XA4连接到AD转换的15通道。

打开Vivado工程

将Basys3-master文件拷贝到D盘内,在路径D:\Basys3-master\Basys3-master\Projects\XADC_Demo\proj文件中找到create_project.tcl,右键单击该文件打开属性,拷贝该文件的位置信息,如:E:\Basys3-master\Basys3-master\Projects\XADC_Demo\proj,将其复制下。

双击桌面上的vivado图标,打开Vivado后找到Tcl_console,先输入cd,然后输入我们刚刚复制的位置信息,随后单击弹出的提示信息proj/,然后回车。再输入source ./,单击提示的create_project.tcl,就打开了XADC_Demo工程,注意该文件夹的路径中一定不要包含汉字,包含汉字则Vivado无法识别。随后会弹出如下页面(其中的UART_TX_CTRL文件本次用不到,可以删除):

展开源文件区的Design Sources和Constraints选项,Design Sources中为实现设计的模块,其中包括开发板的ip核以及用户自己的设计的逻辑。Constraints 中内为约束,包括引脚位置约束、区域约束、时序约束以及电平约束等。全部展开源文件区可以发现内容如下:

其中xadc_wiz_0为xilinx公司提供的ip核,其内部逻辑已经封装好,我们无法查看,每个模块内部都有注释解释代码含义,同学们可自行查看。

将开发板通过micro-usb数据线连接上电脑,点击generate bitstream,在综合、实现后就可以产生bit流,生成bit流后,选择open hardware manager。找到open target,如图:

单击auto connect,完成后单击program device,在弹出对话框中选择program即可。

下载完成后按照下图进行连接:

6脚和12脚接电源的3.3v电压,5脚和11脚接地,将输入电压信号接入第一对管脚,并将其余管脚接地,在0V和1V间调整输入电压信号,观察LED灯和四位数码管的变化。(注意micro-USB线不能拔,否则失去供电)

第三章UART实验

通用异步收发器,简称为UART,是一种通用的数据通信协议,它包括了RS232、RS499、RS423、RS422和RS485等接口标准规范和总线标准规范。而RS232、RS499、RS423、RS422和RS485等,是对应各种异步串行通信口的接口标准和总线标准,它规定了通信口的电气特性、传输速率、连接特性和接口的机械特性等内容。

UART使用的是异步串行通信。

串行通信是指利用一条传输线将资料一位位地顺序传送。特点是通信线路简单,利用简单的线缆就可实现通信,降低成本,适用于远距离通信,但传输速度慢的应用场合。

异步通信以一个字符为传输单位,通信中两个字符间的时间间隔多少是不固定的,然而在同一个字符中的两个相邻位间的时间间隔是固定的。

数据传送速率用波特率来表示,即每秒钟传送的二进制位数。例如数据传送速率为120字符/秒,而每一个字符为10位(1个起始位,7个数据位,1个校

验位,1个结束位),则其传送的波特率为10×120=1200字符/秒=1200波特。

数据通信格式如下图:

其中各位的意义如下:

起始位:先发出一个逻辑”0”信号,表示传输字符的开始。

数据位:可以是5~8位逻辑”0”或”1”。如ASCII码(7位),扩展BCD

码(8位)。小端传输

校验位:数据位加上这一位后,使得“1”的位数应为偶数(偶校验)或奇数(奇校验)

停止位:它是一个字符数据的结束标志。可以是1位、1.5位、2位的高电

平。

空闲位:处于逻辑“1”状态,表示当前线路上没有资料传送。

而对于FPGA设计者而言,只需要关心与其接口的RS232_TX和RS232_RX两个信号。RS232_TX是数据发送端口,RS232_RX是数据接收端口。

而我们这个实验要实现的功能就是FPGA实时监测RS232_RX信号是否有数据,若接收到数据,则把接收到的数据通过RS232_TX发回给对方。上位机用的是串口调试助手。在代码设计中,发送数据的波特率是可选的,可以是9600bps,19200bps,38400bps,57600bps 或 115200bps。这部分在模块 speed_select 里,用户可以根据需要进行配置。发送的数据帧格式为:1bit起始位(保持一个传输位周期的低电平),8bit数据,无校验位,1bit停止位。

该设计分为4个模块实现,4个模块的划分主要是依据数据流的方向。my_uart_rx模块主要是完成数据的接收,speed_select(speed_rx)模块主要响应my_uart_rx模块发出的使能信号进行波特率计数,并且回送一个数据采样使能信号。my_uart_tx模块在my_uart_rx模块接收好一个完整的数据帧后启动,将接收到的数据返回给对方,它的波特率控制是由speed_select(speed_tx)模块产生。

具体代码可参见Vivado工程,下载的方式也与XADC一样,这里不再赘述。

本文来源:https://www.bwwdw.com/article/va9j.html

Top