最专业的FPGA ZYNQ论坛--黑金动力社区

 找回密码
 注册
查看: 385|回复: 3

新手求助,串口发送一直是0

[复制链接]
suanfalalala 发表于 2017-1-11 21:49:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
本人新手,正学习FPGA,准备先写一个简单的,就是上电之后一直发送数据,但是实际情况是一直接收到的是00(16进制显示)
程序如下:还请各位多多指教:
//top:
`timescale 1ns / 1ps
module top(clk_50,tx);
input clk_50;
output tx;
wire [7:0] data;
assign data=8'd65;
wire clk;
clock u0(
                .clk_50(clk_50),
                .clk_band(clk)
                );
tx u1(
                .clk(clk),
                .data(data),
                .tx(tx)
                );
endmodule

//clock:
`timescale 1ns / 1ps
module clock(clk_50,clk_band);
input clk_50;
output clk_band;
reg [15:0] cnt;
reg clk_band;
always@(posedge clk_50)
begin
        case(cnt)
                16'd162:
                        begin
                                clk_band<=1'b1;
                                cnt<=cnt+16'd1;
                        end
                16'd325:
                        begin
                                clk_band<=1'b0;
                                cnt<=cnt+16'd1;
                        end
                default:
                        begin
                                //clk_band<=clk_band;
                                cnt<=cnt+16'd1;
                        end
        endcase
end
endmodule

//tx:
`timescale 1ns / 1ps
module tx(clk,data,tx);
input clk;
input [7:0] data;
output tx;
reg tx;
reg [7:0] cnt;
always@(posedge clk)
begin
                case(cnt)
                8'd0:
                        begin
                                tx<=1'b0;
                                //t_state<=1'b1;
                                cnt<=cnt+8'b1;
                        end
                8'd16:
                        begin
                                tx<=data[0];
                                //t_state<=1'b1;
                                cnt<=cnt+8'b1;
                        end
                8'd32:
                        begin
                                tx<=data[1];
                                //t_state<=1'b1;
                                cnt<=cnt+8'b1;
                        end
                8'd48:
                        begin
                                tx<=data[2];
                                //t_state<=1'b1;
                                cnt<=cnt+8'b1;
                        end
                8'd64:
                        begin
                                tx<=data[3];
                                //t_state<=1'b1;
                                cnt<=cnt+8'b1;
                        end
                8'd80:
                        begin
                                tx<=data[4];
                                //t_state<=1'b1;
                                cnt<=cnt+8'b1;
                        end
                8'd96:
                        begin
                                tx<=data[5];
                                //t_state<=1'b1;
                                cnt<=cnt+8'b1;
                        end
                8'd112:
                        begin
                                tx<=data[6];
                                //t_state<=1'b1;
                                cnt<=cnt+8'b1;
                        end
                8'd128:
                        begin
                                tx<=data[7];
                                //t_state<=1'b1;
                                cnt<=cnt+8'b1;
                        end
                8'd144:
                        begin
                                tx<=1'b1;
                                //t_state<=1'b1;
                                cnt<=cnt+8'b1;
                        end
                8'd160:
                        begin
                                tx<=1'b1;
                                //t_state<=1'b0;
                                cnt<=8'b0;
                        end
                default:
                        begin
                                //tx<=tx;
                                cnt<=cnt+8'b1;
                        end
                endcase
end
endmodule

谢谢大家!!
Bugod 发表于 2017-1-11 23:06:09 来自手机 | 显示全部楼层
个人觉得这样写代码并不是很好。其次,你分频的时间很有问题。还有你tx在default时,不知道会不会锁存前一个信息。你在modelsim走一遍,问题基本能找到
 楼主| suanfalalala 发表于 2017-1-11 23:25:24 | 显示全部楼层
Bugod 发表于 2017-1-11 23:06
个人觉得这样写代码并不是很好。其次,你分频的时间很有问题。还有你tx在default时,不知道会不会锁存前一 ...

谢谢,问题按照您给我的方法,问题已经找到了,真的非常感谢!!
许多耗子 发表于 2017-7-27 15:35:03 | 显示全部楼层
请问是啥问题啊?

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|@2009-2016 芯驿电子科技(上海)有限公司|小黑屋|手机版|Archiver|黑金动力社区 ( 沪ICP备11013590沪公网安备 31011702000003号

GMT+8, 2017-11-19 03:14 , Processed in 0.068858 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表