ep4ce10v1.2核心板实验例程vhdl基础教程_第1页
ep4ce10v1.2核心板实验例程vhdl基础教程_第2页
ep4ce10v1.2核心板实验例程vhdl基础教程_第3页
ep4ce10v1.2核心板实验例程vhdl基础教程_第4页
ep4ce10v1.2核心板实验例程vhdl基础教程_第5页
已阅读5页,还剩10页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、华升泰克电子技术2017 年 10 月 5 日HSEDAEP4CE10 V1.1 VDHL 实验目录目录0一、 LED2(一)(二)(三)硬件设计2程序4实验效果5二、 KEY5(一)(二)(三)硬件设计6程序7实验效果8三、 UART8硬件设计9程序13实验效果14(一)(二)(三)第 1 页一、LED板搭载有 4 个用户可自定义的 LED0、LED1、LED2、LED3。由原理图可知,LED 直接由 FPGA I/O口驱动,低电平点亮板上模块位置(一)硬件设计用 Quartus II 13.0 (64-bit)打开 Verilogs1_led_testProject 路径下的 s1_led

2、_test.qpf双击顶层文件,便可以打开 led_test.vhd,查看程序第 2 页library ieee;use ieee.std_logic_1164.all;USE IEEE.STD_LOGIC_ARILL; USE IEEE.STD_LOGIC_UNSIGNED.ALL;entity led_ PORT(clk_50m : IN STD_LOGIC;程序分析:程序中 QN 为时间计数器。计数器最大值为 29999999,时钟为 50MHz,达到最大值时 QN 清零,进入循环,同时 Q 值递增。由于 Q 是 4 位数据,递增溢出后,会继续从零开始,所以不用担心。相当于每 20ns*

3、29999999 这段时间内 Q 值递增。Q 值 0F 循环。将 Q 值取反后,直接送给外部端口 ledVHDL 文件创建:a.点击中的“File”-“New.”,或按快捷键“Ctrl”+“N”,选择“VHDL File”,点击 OK第 3 页led : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);end;architecture behv of led_SIGNALQN :eger range 0 to 50000000;SIGNALQ:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGINPROS (clk_50m) BEGINIF rising_ed

4、ge(clk_50m) THENIF QN = 29999999 THEN-设置分频数 QN = 0;Q = Q + 1; ELSEQN = QN + 1; END IF;END IF;led “Save As.”,输入你想保存的文件名就可以了,比如“led_test”分析完程序后,可以直接进行全局编译(二)程序 连接 JTAG器到开发板,确定驱动器安装成功第 4 页开发板上电点击中“Tools”-“Programmer”,或按下快捷键。sof 文件地址“Projectoutput_files”(三)实验效果板 LED3LED0 做流水灯显示二、KEY板搭载有 4 个用户可自定义的按键 S1、

5、S2、S3、S4。由原理图可知,当按键按下,等于直接接地,S1S4 端检测到电压为 0V;弹起时,悬空,S1S4 端检测到电压为 3.3V。第 5 页板上模块位置(一)硬件设计用 Quartus II 13.0 (64-bit)打开 VHDLs2_key_testProject 路径下的 key_test.qpf双击顶层文件,便可以打开 key_test.vhd,查看程序第 6 页-* LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARILL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;-* ENT

6、ITY key_PORT(key : IN std_logic_vector(3 downto 0);程序分析:程序很简单,没消抖处理,直接将 IO 口的数据送出 IO 口程序定义了按键端口 key 为 4 位的输入,led 端口为 led 为 4 位的输出,直接将 key 的值赋给 led 就可以了 分析完程序后,可以直接进行全局编译(二)程序连接 JTAG开发板上电器到开发板,确定驱动器安装成功点击中“Tools”-“Programmer”,或按下快捷键。sof 文件地址“Projectoutput_files”第 7 页led : OUT std_logic_vector(3 downt

7、o 0);END key_test;-* ARCHITECTURE behv OF key_BEGINled = key;-按键弹起为,LED 低电平点亮end behv;(三)实验效果每次按下 S1,LED0 亮;弹起,熄灭每次按下 S2,LED1 亮;弹起,熄灭每次按下 S3,LED2 亮;弹起,熄灭每次按下 S4,LED3 亮;弹起,熄灭三、UART通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称作 UART。UART 是一种通用串行数据总线,用于异步通信。该总线双向通信,可以实现全双工传输和接收。在 FPGA 开发板设

8、计中,UART 用来与 PC 进行通信,包括数据通信,命令和控制信息的传输。实验之前通信协议和传输时序。先来了解一下 UART 的UART 通信 UART 首先将接收到的并行数据转换成串行数据来传输。消息帧从一个低位起始位开始,后面是 7 个或 8 个数据位,一个可用的奇偶位和一个或几个停止位。发现开始位时它就知道数据准备发送,并尝试与发送器时钟频率同步。如果选择了奇偶校验,UART 就在数据位后面加上奇偶位。奇偶位可用来帮助错误校验。在接收过程中,UART 从消息帧中去掉起始位和结束位,对进来的字节进行奇偶校验,并将数据字节从串行转换成并行。UART 传输时序如下图所示:华升泰克公司的板 E

9、P4CE10 VER1.1 上 RS232 接口既能为开发板提供电源,又能作为 UART 接口用于开发板和 PC 之间的串口通信。硬件设计采用Prolific 公司生产的 PL2303作为 USB 和 UART 电平转换的桥梁,USB 接口采用 Micro USB 接口,用户可以用一根开发板自带的 USB 线连接开发板到 PC 上进行串口的数据通信。USB 转 UART以及 UART 模块接口原理图如下:第 8 页其中 RXD 信号是 FPGA 数据 UART 接收, 而对 PL2303来说是数据发送; TXD 信号是 FPGA 数据发送,而对 PL2303来说是数据接收。在板实物图如下:(一

10、)硬件设计用 Quartus II 13.0 (64-bit)打开 VHDLs3_uart_testProject 路径下的 uart_test.qpf双击顶层文件,便可以打开 uart_test.vhd,查看程序第 9 页-串口调试工具,频率设置成 115200,设置成十六进制,在串口调试工具的发送区域中输入:86,会在串口调试工具的接收区域内收到:86-一次发送一个字符library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARILL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity uart_ P

11、ort(- 顶层实体clk50mhz : in STD_LOGIC; - FPGA 的时钟reset : in STD_LOGIC; - 总 reset, = 1时复位rxd : in STD_LOGIC; - 接受数据(Received Data,RXD),通过 RXD 终端接受外来数据txd_out : out STD_LOGIC; - 发送数据(Transmitted DaXD),通过 TXD 串行发送数据txd_done_out : out STD_LOGIC - 数据发送完毕信号,也是标志位,没有控制作用,在停止位后变化. = 1 表示数据发送完毕);end uart_test;ar

12、chitecture Behavioral of uart_signal iBuffer : STD_LOGIC_VECTOR (7 downto 0); - 测试信号,无关变量,可以忽略signal irdy : std_logic;component receiver - receiver 元件Port (bclkr : in STD_LOGIC; - 分频后的时钟resetr : in STD_LOGIC; - RESET OF RECEIVER,= 1 有效rxdr : in STD_LOGIC; - RXD IN RECEIVER COMPONENTr_ready : out STD

13、_LOGIC; - RECEIVER 接受数据后给出的 ready 信号rbuf : out STD_LOGIC_VECTOR (7 downto 0) - 数据接受缓冲区);end component;- END OF RECEIVERcomponent transfer - TRANSFER 元件Port (bclkt : in STD_LOGIC;resett : in STD_LOGIC; - RESET OF COMPONENT,= 1 有效xmit_cmd_p : in STD_LOGIC;- 传输命令信号,txdbuf: in STD_LOGIC_VECTOR (7 downto

14、 0); - 发送数据缓冲区txd : out STD_LOGIC; - TXDRANSFERtxd_done : out STD_LOGIC - 数据发送完毕信号,也是标志位,没有控制作用,在停止位后变化.= 1 表示数据发送完毕);end component;- END OF TRANSFER第 10 页程序分析:uart_test.v 中调用了三个子程序,分别为串口发送程序 transfer.vhd,串口接收程序 receiver.vhd,时钟产第 11 页component baud- 分频元件Port (clk :in STD_LOGIC;- 待分频时钟resetb:in STD_L

15、OGIC;- RESET 信号, clk50mhz, resetb = not reset, bclk = b);u2:receivort map (bclkr = b,resetr = not reset, rxdr = rxd, r_ready = irdy, rbuf = ibuffer);u3:transfort map (bclkt = b,resett = not reset, xmit_cmd_p = irdy, txdbuf = ibuffer, txd = txd_out,txd_done = txd_done_out);end Behavioral;生程序 baud.vhd

16、。1)baud.vhd 程序产生时钟,产生 uart 接收和发送波特率为 115200bps 的时钟信号。分频参数计算:假设数据的波特率为 p,则所需时钟的频率为 16*p。以波特率 p 为 115200 为例,系统时钟为 50MHz,则分频系数为 50000000/(16*115200) = 27.126,取整为272)receiver.vhd 程序为串口接收程序。串行通信的,通过状态机,分为五个状态轮流执行R_START 状态(等待起始位):当 UART复位后,接收状态机将处于这一个状态.在此状态下,状态机一直在等待RXD 的电平跳转,从逻辑 1 变为逻辑0,即起始位,这意味着新的一帧UA

17、RT 数据帧的开始,一旦起始位被确定,状态机将转入 R_CENTER 状态R_CENTER 状态(起始位确认状态): 当确认是起始位,并且稳定,转入R_WAIT?刺?本程序认为保持超过 1/4 个位时间的信号认为是起始信号R_WAIT 状态 : 当状态机处于这一个状态时,等待计满 15 个 bclk 周期,在第 16 个 bclk 进入R_SLE 状态进行数据位的采样检测,同时也判断的数据位长度是否已经达到数据帧的长度,如果 = framlenr,就说明停止位来临R_SLE 状态: 即数据位采样检测,完成后无条件状态机转入 R_WAIT 等待,等待下次数据位的到来R_STOP 状态: 输出 r

18、eady 信号,表明该帧传输完毕,之后转入 R_START 状态3)transfer.vhd 程序为串口发送。串行通信的发送器,通过状态机,分为五个状态轮流执行X_IDLE(空闲)状态 : 当 UART 被复位后,状态机将立刻进入这一状态,在这个状态下,状态机一直等待发送命令 XMIT_CMD,当接收到发送命令后,状态机进入 X_START 状态,准备发送起始位信号X_START 状态 : 在这个状态下,UART 发送一个位时间宽度的逻辑0,信号至 TXD,即起始位,紧接着状态机进入 X_SHIFT 状态,发一位数据X_WAIT 状态 : 当状态机处于这一个状态时,等待计满 15 个bclk 周期,在第 16 个bclk 进入X_SHIFT状态进行数据位的发送,同时也判断发送的数据位长度是否已经达到数据帧的长度,如果 = framlent,就说明停止位发送进入停止状态.X_SHIFT 状态 : 实现待发数据的并串转换,转换完成立即进入 X_WAIT 状态,进行下一次发送X_STO

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论