这个是我写的程序,不明白的是为什么就那几个数不对,其它的对呢? module sram(clk,rst,address,data,ce,oe,we,ledout); input clk,rst; output [18:0]address; output[7:0]ledout; inout [7:0]data; output ce,oe,we; reg[18:0]address; reg oe,we; wire ce; wire[7:0]data; reg [7:0]datareg; reg[7:0]ledout; reg[3:0]ps,ns; parameter st0=3'D0,st1=3'D1,st2=3'D2,st3=3'D3,st4=3'D4; assign data=oe ? datareg: 'hz; assign ce=1'b0; always@(posedge clk or negedge rst) if(!rst) begin ps<=st0; we<=1; oe<=1; address<=0; datareg<=0; end else case (ps) st0:begin we<=1;oe<=1; ps<=st1; end st1:begin we<=1'b0;oe<=1'b1; address<=address+1'b1; datareg<=datareg+1'b1; ps<=st2; end st2:begin we<=1'b1; oe<=1'b1; if(address>=19'D1000) begin //address<=0; ps<=st3; end else ps<=st1; end st3:begin oe<=1'b0; we<=1'b1; address<=19'D230; ledout<=data; ps<=st4; end st4:begin ledout<=data; ps<=st3; end default:ps<=st0; endcase endmodule |