📄 flashrdcon.v
字号:
// flashRdCon.v
module flashRdCon(
clk24M,
arst,
callbackbegin,
pagefull,
cmdstart,
cmdfinish,
datastart,
addr,
finish
);
input
clk24M,
arst,
callbackbegin,
pagefull,
cmdfinish;
output
cmdstart,
datastart,
finish;
output [15:0]
addr;
reg
cmdstart,
datastart;
reg [15:0]
addr;
wire
addrfull;
reg [2:0]
state;
assign finish = state[2] & state[1] & state[0];
always @(posedge clk24M or negedge arst)
begin
if(arst == 0)
begin
state <= 3'd0;
cmdstart <= 1'b0;
datastart <= 1'b0;
end
else
begin
case(state)
3'd0:
state[0] <= callbackbegin;
3'd1:
begin
cmdstart <= 1'b1;
state <= 3'd2;
end
3'd2:
begin
cmdstart <= 1'b0;
state[0] <= cmdfinish;
end
3'd3:
begin
datastart <= 1'b1;
state <= 3'd4;
end
3'd4:
begin
datastart <= 1'b0;
state[1] <= pagefull;
end
3'd6:
begin
if(addrfull)//为1时表示没满
begin
state <= 3'd1;
end
else
begin
state <= 3'd7;//结束状态
end
end
endcase
end
end
//计算读flash的页数
always @(posedge clk24M or negedge arst)
begin
if(arst == 0)
begin
addr <= 16'd0;
end
else
begin
if(pagefull)
begin
addr <= addr + 1'b1;
end
end
end
assign addrfull = (((addr[15] | addr[14]) | (addr[13] | addr[12])) | ((addr[11] | addr[10]) | (addr[9] | addr[8]))) |
(((addr[7] | addr[6]) | (addr[5] | (~addr[4]))) | ((addr[3] | addr[2]) | (addr[1] | (addr[0]))));
endmodule
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -