カウンターを使用して遅延を生成したいのですが、実際にはここではカウンターを使用して各1ビット転送後に遅延を生成するため、SPI(シリアル)LCDが接続されているfpgaピンで外部からよりよく理解できます。したがって、1ビットをシフトしてから次のビットに遅延を与えるシフトレジスタを作成しました(Bit-Delay-bit-delay ..)。
これが私のカウンターのコードです:
module spidelay(
input wire clk,
input wire enb,
output reg sclkout
);
reg [23:0] stmp;
always @(posedge clk) begin
if ( enb == 1 ) begin
stmp = stmp+1;
if( stmp[23] == 1 ) begin
sclkout = 1'b1;
stmp = 24'b0;
end
end
else begin
stmp = 24'b0;
sclkout = 1'b0;
end
end
endmodule
友達ですが、内部でカウンターを有効/開始する方法がわからないという問題がありalways block
ます。つまり、常に内部で遅延を生成したい行でカウンターを開始/有効にする方法がわからないということです。
これは、特定の行で遅延を生成したいトップモジュールのコードです--->>
module Nokia_LCD(input clk,input switch,output OUT,output reset,inout sck,output cs);
wire clk;//On Board Clock
wire switch;//Switch For RESET
integer i;
integer z;//Used for, for loop for generating delay
reg signed OUT;//OUT for sending Data serially to LCD
reg reset=1'b1;//To Reset LCD
wire sck; //We select sck as inout because it taking input from counter Instance and then gives output to LCD..
reg cs; //Chip select pin of lcd always set to zero
reg signed[8:0]out;//Register for Storing value of OUT
reg [5:0]state =6'b000000; //Initialize states to Zero
reg [7:0]finder; //Finder finds the state that was last present in it so that by this we again go to that state sequentially
reg [7:0]font[1:0][5:0];//2-D Array of 8 Bit For Font
reg [23:0]stmp=24'b00000_00000_00000_00000_0000;
reg enb;
wire sclkout;
counter count1(clk,sck);//Instance of Counter1 for SCK Clock
spidelay count2(clk,enb,sclkout);
always@(posedge clk)
begin
case (state)
/* Lcd Initialization starts from here*/
6'b000000 : begin
finder=8'b00000000;
cs=1'b0;
out=9'b0_00010001; //Using Command SLEEPOUT (Hex 0x11) - Exits LCD sleep mode
state=6'b010001;
end
6'b000001: begin
finder=8'b00000001;
cs=1'b0;
out=9'b0_00000011; //Using Command BSTRON (Hex 0x03) - Turns on booster voltage
state =6'b010001;
end
/******************************************************************************************************************/
/************************************ State for SPI Data Transfer & Delay *****************************************/
/******************************************************************************************************************/
6'b010001:begin
//We Use finder to find the state from which it Comes...
if(finder==8'b00000000) //for 0
begin:close1
cs=1'b0;
for(i=0;i<=8;i=i+1)
begin
out=out<<<1;
OUT=out[8];
enb=1'b1; <<<<<<<-----|This is the place where I want it to enable counter and it must stop here for counting and during this time it not move for othe count of for loop......
if(stmp[23]==1'b1)
begin
disable close1;
end
end
state=6'b000001;//Go to State 000001(BSTRON)
end
endcase
end //Always end
endmodule
エラーのポイントに集中するために友人が編集していることに注意する必要があります....そのため、どこかで構文のエラーを見つけた場合は無視してください。 enb=1'b1 を指定してブロック .......