📄 uart.v
字号:
`timescale 1ns / 1ps
////////////////////////////////////////////////////////////////////////////////
// Company:
// Engineer:
//
// Create Date: 15:15:34 01/11/08
// Design Name:
// Module Name: uart
// Project Name:
// Target Device:
// Tool versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
////////////////////////////////////////////////////////////////////////////////
module uart(CLK,data_in,data1,data_out);
input CLK;
input data_in;
output reg [7:0]data1;
output data_out;
reg [29:0]cnt1=0;
reg [25:0]cnt2=0;
reg busy=0;
reg [9:0]rxdata;
reg hunt=0,hunt1=0;
reg flag=0; //帧结束标志
always@(posedge CLK) begin
hunt1<=hunt;
if(hunt1==0&&hunt==1) begin
busy<=1;
end
if(busy) begin
cnt1<=cnt1+1;
cnt2<=cnt2+1;
end
if(cnt1==34133-1-2500) begin
if(rxdata[0]==1&&rxdata[9]==0) begin
busy<=0;
cnt1<=0; //如果检测帧起始位停止位正确,则并行输出数据
cnt2<=0;
data1[7:0]<=rxdata[8:1];
flag<=1;
end
else begin
cnt1<=cnt1-3413; //如果检测帧起始位停止位错误,则丢弃此帧
flag<=0;
end
end
else begin
flag<=0;
end
if(cnt2==200&&busy==1) begin //在第二百个采样点处引入输入数据
rxdata[0]<=data_in;
rxdata[9:1]<=rxdata[8:0];
end
if(cnt2==3413-1) begin //每一位采3413个点
cnt2<=0;
end
if(busy==0&&data_in==0) begin
hunt<=1;
end
else begin
hunt<=0;
end
end
send u1(.CLK(CLK),.flag(flag),.data_in(data1),.data_out(data_out),.data_out_flag());
////////////////////chipscope///////////////////////////////////////
wire [35:0] control0;
//-----------------------------------------------------------------
//
// ICON core instance
//
//-----------------------------------------------------------------
icon i_icon
(
.control0(control0)
);
wire [31:0] data;
wire [0:0] trig0;
assign data[31:9]='b0;
assign data[7:0]=data1[7:0];
assign data[8]=data_out;
assign trig0=hunt;
//-----------------------------------------------------------------
//
// ILA core instance
//
//-----------------------------------------------------------------
ila i_ila
(
.control(control0),
.clk(CLK),
.data(data),
.trig0(trig0)
);
endmodule
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -