sreelatha219
Newbie level 2
how to give values to uart transmitter so that i can those values in pc.
nd this is my code
module uart_tx(
input clk,
input reset,
input transmit,
input [7:0] data,
output reg Txd
);
reg [3:0] bitcounter;
reg [12:0]counter;
reg state,nextstate;
reg[10:0]rightshiftreg; //start,8 bit data,stop bits
reg shift,load,clear;
always@(posedge clk)
begin
if(reset) begin
state<=0;
counter<=0;
bitcounter<=0;
end
else begin
counter<=counter+1;
if(counter>=1)
begin
state<=nextstate;
counter<=0;
if(load) rightshiftreg<={1'b1,^data,data,1'b0};
if(clear) bitcounter<=0;
if(shift) begin
rightshiftreg<=rightshiftreg>>1;
bitcounter<=bitcounter+1;
end
end
end
end
always@(state or bitcounter or transmit)
begin
load<=0;
shift<=0;
clear<=0;
Txd<=1;
case(state)
0:begin
if(transmit==1)
begin
nextstate<=1;
load<=1;
shift<=0;
clear<=0;
end
else begin
nextstate<=0;
Txd<=1;
end
end
1:begin
if(bitcounter<=10) begin
nextstate<=0;
clear<=1;
end
else begin
nextstate<=1;
shift<=1;
Txd<=rightshiftreg[0];
end
end
endcase
end
endmodule
nd this is my code
module uart_tx(
input clk,
input reset,
input transmit,
input [7:0] data,
output reg Txd
);
reg [3:0] bitcounter;
reg [12:0]counter;
reg state,nextstate;
reg[10:0]rightshiftreg; //start,8 bit data,stop bits
reg shift,load,clear;
always@(posedge clk)
begin
if(reset) begin
state<=0;
counter<=0;
bitcounter<=0;
end
else begin
counter<=counter+1;
if(counter>=1)
begin
state<=nextstate;
counter<=0;
if(load) rightshiftreg<={1'b1,^data,data,1'b0};
if(clear) bitcounter<=0;
if(shift) begin
rightshiftreg<=rightshiftreg>>1;
bitcounter<=bitcounter+1;
end
end
end
end
always@(state or bitcounter or transmit)
begin
load<=0;
shift<=0;
clear<=0;
Txd<=1;
case(state)
0:begin
if(transmit==1)
begin
nextstate<=1;
load<=1;
shift<=0;
clear<=0;
end
else begin
nextstate<=0;
Txd<=1;
end
end
1:begin
if(bitcounter<=10) begin
nextstate<=0;
clear<=1;
end
else begin
nextstate<=1;
shift<=1;
Txd<=rightshiftreg[0];
end
end
endcase
end
endmodule