1.線路狀態(tài):在平時不發(fā)送數(shù)據(jù)的時候,DI 為高電平。SCK為低電平。2.起始位:SCK 為高的時候,DI 的下降沿決定了一次數(shù)據(jù)傳送的開始。也就是說,在發(fā)送數(shù)據(jù)的時候,SCK為高電平的期間,DI 不允許變化。
本文引用地址:http://butianyuan.cn/article/201612/330297.htm3.起始位有效后,SCK的上升沿輸出數(shù)據(jù)。
4.時序圖
5.所有數(shù)據(jù)低位在前
數(shù)據(jù)為單向發(fā)送,目的是產(chǎn)生寬度可頻率可以調(diào)節(jié)的信號。同時產(chǎn)生一路Pwm信號,本設(shè)計只是發(fā)送數(shù)據(jù)部分
代碼:
module SetData(Rst,SCK,DI,Width,Cycle,PWM);
input SCK,DI,Rst;
output reg [7:0]Width;//脈沖寬度
output reg [23:0]Cycle;//周期
output reg [7:0] PWM;//Pwm數(shù)據(jù)
reg [7:0]Buff;
reg [7:0] Buff1;
reg [2:0]Stage;//狀態(tài)變量
reg [5:0]Cnt;
reg Load;
reg INIT;//起始位標(biāo)記
parameterStatus0= 3b000;//狀態(tài)定義
parameterStatus1= 3b001;
parameterStatus2= 3b010;
parameterStatus3= 3b011;
parameterStatus4= 3b100;
parameterStatus5= 3b101;
parameterStatus6= 3b110;
parameterStatus7= 3b111;
always @(negedge Rst,negedge SCK)//產(chǎn)生串并轉(zhuǎn)換完成信號(8bit)
begin
if(!Rst) Load<=0;
else if ((!SCK)&&(Cnt==8))
Load<=1;
else Load<=0;
end
always @(negedge DI)//檢測起始位
begin
if(SCK==1)INIT<=0;//標(biāo)記到init 中
else INIT<=1;
end
always @(negedge Rst,posedge SCK,negedge INIT)//狀態(tài)轉(zhuǎn)換
begin
if ((Rst==0) || (INIT==0))//強制到狀態(tài)0
begin
Stage<=Status0;
Buff<=0;
end
else if ((SCK==1)&&(Stage==Status0)) begin Stage<=Status1;Cnt<=0; end
else if ((SCK==1)&&(Stage!=Status0))
begin
Buff<={DI,Buff[7:1]};
Cnt <= Cnt+1;
if (Cnt==8)
begin
Cnt<=1;
Stage<=Stage+1;
if (Stage==Status7) Stage<=Status0;
end
end
end
always @(posedge Load,negedge INIT)//組合出需要的數(shù)據(jù)
begin
if (INIT==0)//如果是起始位,所有數(shù)據(jù)清零
begin Width <=0;Cycle<=0; PWM<=0; end
else
//begin
case(Stage)//不同狀態(tài)下的數(shù)據(jù)輸出
//Status0:
Status1: Width<=Buff;//脈寬數(shù)據(jù)
Status2: Cycle<={ Cycle[23:8],Buff};//周期數(shù)據(jù)
Status3: Cycle<={ Cycle[23:16],Buff,Cycle[7:0]};
Status4: Cycle<={ Buff,Cycle[15:8],Cycle[7:0]};
Status5: PWM<=Buff;//PWM數(shù)據(jù)
endcase
// end
end
endmodule
仿真結(jié)果
注意圖中認(rèn)為中斷了數(shù)據(jù)發(fā)送(通過設(shè)置起始位來實現(xiàn))。
初學(xué)verilog語言,用的可能不夠規(guī)范,主要是不習(xí)慣不能在不同進程里對同一個變量賦值的約束,只好加一個init變量進行信號傳遞。
評論