📄 _422_txd.v
字号:
module _422_txd(sclk_2x,
reset,
sdout,
sclk_out
);
input sclk_2x,reset;
output sclk_out,sdout;
reg sdout;
reg [7:0]data_txd;
reg [4:0]counter;
reg sclk_out;
always @(posedge sclk_2x or negedge reset)
begin
if(!reset)
begin
data_txd=8'd1;
counter<=5'b10000;
sdout<=data_txd[0];
sclk_out<=1'b0;
end
else
begin
case (counter)
5'b10000://0th bit
begin
sclk_out<=1'b0;
sdout<=data_txd[0];
counter[4]<=~counter[4];
end
5'b00000:
begin
sclk_out<=1'b1;
counter[0]<=~counter[0];
end
5'b00001://1th bit
begin
sclk_out<=1'b0;
sdout<=data_txd[1];
counter[1]<=~counter[1];
end
5'b00011:
begin
sclk_out<=1'b1;
counter[0]<=~counter[0];
end
5'b00010://2th bit
begin
sclk_out<=1'b0;
sdout<=data_txd[2];
counter[2]<=~counter[2];
end
5'b00110:
begin
sclk_out<=1'b1;
counter[0]<=~counter[0];
end
5'b00111://3th bit
begin
sclk_out<=1'b0;
sdout<=data_txd[3];
counter[1]<=~counter[1];
end
5'b00101:
begin
sclk_out<=1'b1;
counter[0]<=~counter[0];
end
5'b0100://4th bit
begin
sclk_out<=1'b0;
sdout<=data_txd[4];
counter[3]<=~counter[3];
end
5'b01100:
begin
sclk_out<=1'b1;
counter[0]<=~counter[0];
end
5'b01101://5th bit
begin
sclk_out<=1'b0;
sdout<=data_txd[5];
counter[1]<=~counter[1];
end
5'b01111:
begin
sclk_out<=1'b1;
counter[0]<=~counter[0];
end
5'b1110://6th bit
begin
sclk_out<=1'b0;
sdout<=data_txd[6];
counter[2]<=~counter[2];
end
5'b01010:
begin
sclk_out<=1'b1;
counter[0]<=~counter[0];
end
5'b01011://7th bit
begin
sclk_out<=1'b0;
sdout<=data_txd[7];
counter[1]<=~counter[1];
end
5'b01001:
begin
sclk_out<=1'b1;
counter[0]<=~counter[0];
end
//////////////////////////////////////////
5'b01000:
begin
counter[4]<=~counter[4];
//=================================
data_txd<=data_txd+8'd1;
end
5'b11000:
begin
sclk_out<=1'b0;
counter[3]<=~counter[3];
end
endcase
end
end
endmodule
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -