悬赏1积分未解决
各位麻烦问一下,本人才开始学习,麻烦各位了。最近在学习串口,想用串口接收到的数据来控制8个LED,但是在控制的时候遇到问题。下面是程序
`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company:
// Engineer:
//
// Create Date: 21:42:16 08/28/2016
// Design Name:
// Module Name: uart_rx_tx
// Project Name:
// Target Devices:
// Tool versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//////////////////////////////////////////////////////////////////////////////////
module uart_rx_tx(
input clk_i,
input reset,
input uart_rx_data,
output uart_tx_data,
output [7:0] led
);
(*keep = "true"*)
wire [7:0] uart_data_o;
(*keep = "true"*)
wire uart_rx_done;
//wire [1:0] led; //在整合过程中 输入输出不需要重新定义
// Instantiate the module
uart uart_u(
.clk(clk_i),
.uart_rx_i(uart_rx_data),
.uart_data_o(uart_data_o),
.rx_done(uart_rx_done),
.uart_bps_sam() //虽然这里没有用到 但是也必须和底层相匹配
);
// // Instantiate the module
uart_tx uart_tx_u (
.clk(clk_i),
.uart_tx_data_o(uart_data_o),
.uart_tx_en(uart_rx_done),
.uart_tx_o(uart_tx_data)
);
// Instantiate the module
uart_led uart_led_u (
.clk(clk_i),
.led(led),
.reset(reset),
.led_en(uart_rx_done),
.uart_rx_data_i(uart_data_o)
);
endmodule
这是顶层的程序
串口接收的程序是参考米联的。
下面是我的控制程序:
module uart_led(
input clk,
input reset,
output reg [7:0] led = 8'b11111111,
input [7:0] uart_rx_data_i,
input led_en
);
reg [7:0] led_cnv;
always @ (posedge clk ) begin
if(led_en)
led_cnv <= uart_rx_data_i;
else
led_cnv <= led_cnv;
end
always @ (posedge clk ) begin
case (led_cnv)
8'b11111000:
led[0] <= ~led[0];
8'b11111001:
led[1] <= ~led[1];
8'b11111010:
led[2] <= ~led[2];
8'b11111011:
led[3] <= ~led[3];
8'b11111100:
led[4] <= ~led[4];
8'b11111101:
led[5] <= ~led[5];
8'b11111110:
led[6] <= ~led[6];
8'b11111111:
led[7] <= ~led[7];
default:
led <=8'b10101010;
endcase
end
endmodule
问题是我只要下完程序运行的就是default里面的数据,我在发送也没有用了,求大神帮忙,谢谢!!
|
|