愤怒的小孩 发表于 2016-9-1 00:00:15

串口问题

各位麻烦问一下,本人才开始学习,麻烦各位了。最近在学习串口,想用串口接收到的数据来控制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 led
    );
(*keep = "true"*)
wire uart_data_o;
(*keep = "true"*)
wire uart_rx_done;
//wire 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(
        inputclk,
        inputreset,
        output reg led = 8'b11111111,
        input uart_rx_data_i,
        input led_en
    );
       
reg 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 <= ~led;
                               
                        8'b11111001:
                                led <= ~led;
                               
                        8'b11111010:
                                led <= ~led;       
                               
                        8'b11111011:
                                led <= ~led;
                               
                        8'b11111100:
                                led <= ~led;
                               
                        8'b11111101:
                                led <= ~led;       
                               
                        8'b11111110:
                                led <= ~led;
                               
                        8'b11111111:
                                led <= ~led;
                               
                default:
                                led <=8'b10101010;
                       
                endcase       
       
end


endmodule


问题是我只要下完程序运行的就是default里面的数据,我在发送也没有用了,求大神帮忙,谢谢!!

uisrc 发表于 2016-9-1 08:16:08




应该是串口数据接收有问题把,你用chipscope观察下 接收到的数据是否正确

愤怒的小孩 发表于 2016-9-1 09:04:38

admin 发表于 2016-9-1 08:16
应该是串口数据接收有问题把,你用chipscope观察下 接收到的数据是否正确

我接受完成又发出去了,通过串口助手可以看到发送的数据。我在看看,谢谢

A1_Vincent 发表于 2019-12-6 17:00:08

clk_i频率有多高?在每次时钟上升沿翻转LED,太快了,不说人眼不能分辨,LED灯可能都反应不过来。话说人眼可以看出来的闪烁应该低于20几赫兹,高了就看不出来闪了,以前旧的放电影的机器就是几十赫兹的刷新率。
页: [1]
查看完整版本: 串口问题