|
发表于 2011-5-22 12:06:15
|
显示全部楼层
module ins (
data,
txd,
//enable,
rst_n,
tx_clk
);
//input enable;
input rst_n;
input data;
input tx_clk;
output txd;
reg txd_reg;
// ONT HOT TYPE
//reg[5:0] cs,ns;
//
//parameter
// A = 0,
// B = 1,
// C = 2,
// D = 3,
// E = 4,
// F = 5;
//
//always@(posedge tx_clk or negedge rst_n)
// if(!rst_n)
// begin
// cs <= 6'b0;cs[A] <= 1'b1;
// end
// else
// cs <= ns;
//
//always@(*)
// begin
// ns <= 6'b0;
// case(1'b1)
// cs[A]: if(data==1'b0) ns[B]<=1'b1; else ns[A]<=1'b1;
// cs[B]: if(data==1'b0) ns[C]<=1'b1; else ns[A]<=1'b1;
// cs[C]: if(data==1'b0) ns[D]<=1'b1; else ns[A]<=1'b1;
// cs[D]: if(data==1'b0) ns[E]<=1'b1; else ns[A]<=1'b1;
// cs[E]: if(data==1'b0) ns[F]<=1'b1; else ns[A]<=1'b1;
// cs[F]: if(data==1'b0) ns[B]<=1'b1; else ns[A]<=1'b1;
// endcase
// end
//always@(posedge tx_clk or negedge rst_n)
// if(!rst_n)
// txd_reg<=1'b0;
// else
// case(1'b1)
// ns[A],ns[B],ns[C],ns[D],ns[E] : txd_reg<=1'b0;
// ns[F] : txd_reg<=1'b1;
// default : txd_reg<=1'b0;
// endcase
//reg[2:0] cs,ns;
//
//parameter
// A = 3'b001,
// B = 3'b010,
// C = 3'b011,
// D = 3'b100,
// E = 3'b101,
// F = 3'b110;
//
//always@(posedge tx_clk or negedge rst_n)
// if(!rst_n)
// begin
// cs <= A;
// end
// else
// cs <= ns;
//
//always@(*)
// begin
//// ns <= 6'b0;
// case(cs)
// A: if(data==1'b0) ns<=B; else ns<=A;
// B: if(data==1'b0) ns<=C; else ns<=A;
// C: if(data==1'b0) ns<=D; else ns<=A;
// D: if(data==1'b0) ns<=E; else ns<=A;
// E: if(data==1'b0) ns<=F; else ns<=A;
// F: if(data==1'b0) ns<=B; else ns<=A;
// endcase
// end
//always@(posedge tx_clk or negedge rst_n)
// if(!rst_n)
// txd_reg<=1'b0;
// else
// case(ns)
// A,B,C,D,E: txd_reg<=1'b0;
// F : txd_reg<=1'b1;
// default : txd_reg<=1'b0;
// endcase
//
//
reg[5:0] cs,ns;
parameter
A = 6'b000001,
B = 6'b000010,
C = 6'b000100,
D = 6'b001000,
E = 6'b010000,
F = 6'b100000;
always@(posedge tx_clk or negedge rst_n)
if(!rst_n)
begin
cs <= A;
end
else
cs <= ns;
always@(*)
begin
// ns <= 6'b0;
case(cs)
A: if(data==1'b0) ns<=B; else ns<=A;
B: if(data==1'b0) ns<=C; else ns<=A;
C: if(data==1'b0) ns<=D; else ns<=A;
D: if(data==1'b0) ns<=E; else ns<=A;
E: if(data==1'b0) ns<=F; else ns<=A;
F: if(data==1'b0) ns<=B; else ns<=A;
endcase
end
always@(posedge tx_clk or negedge rst_n)
if(!rst_n)
txd_reg<=1'b0;
else
case(ns)
A,B,C,D,E: txd_reg<=1'b0;
F : txd_reg<=1'b1;
default : txd_reg<=1'b0;
endcase
assign txd = txd_reg; |
|