1、实验目的
上位机通过串口发送8位密码给逻辑派Z1开发板、开发板接收信息并按位点亮8个led灯。
2、实验原理
上位机通过串口发送8位数据给FPGA。FPGA接收串口数据将8位电灯数据寄存,并点亮相应位的led灯。
3、代码设计
串口点亮led灯top_uart_led顶层代码如下:
verilog
module top_uart_led(
input clk ,//系统时钟,50MHZ
input rst_n ,//系统复位,低电平有效
output [ 7: 0] led ,//点亮呼吸灯
input uart_rx //串口接收的数据
);
wire uart_rx_finish ;//UART接收完成信号
wire [ 7: 0] uart_rx_data ;//UART接收数据
uart_rx u_uart_rx(
.clk (clk ),
.rst_n (rst_n ),
.uart_rxd (uart_rx ),// UART接收端口
.uart_rx_finish (uart_rx_finish ),// 一帧数据接收完成
.uart_rx_data (uart_rx_data ) // 解析后的数据
);
assign led = uart_rx_data;
endmodule
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
顶层代码例化了串口接收模块uart_rx、用于接收上位机发送的串口数据。然后将接收到的数据通过assign语句赋值给8个led灯。实现方法十分简单,其中串口接收模块uart_rx在之前的章节已经进行了详细的说明,如果对其工作逻辑不太清楚可以回到串口回环章节进行了解。
4、实验现象
我们将程序下载进入板卡,将板卡通过扩展io口连接上位机,打开串口调试助手,设置串口波特率为115200,设置为16进制发送。发送数据FF(二进制的11111111),此时板卡led灯全部被点亮。发送数据55(也就是二进制的01010101),可以发现板卡led被交替点亮。