module counter( input clk, input rst_n, output reg[7:0] data_out ); //reg define reg [3:0] cnt; //假设计数器每计数十次,溢满一次 reg [2:0] lsm_cnt; //计数器每溢满一次,lsm_cnt寄存器自加1 //parameter [7:0] num = 8'b10110101;此句和下面两句功能等效 wire [7:0] num; //定义一个八位数据 assign num = 8'b10110101; initial data_out <= 8'b0000_0000; //如果此处没有给初值,那么在仿真中不知道每一位是0还是1,data_out的值将呈现高阻态为8‘dX, //只有后面case语句执行8次将寄存器的每一位都写入值后,仿真中data_out才有值显示出来 always@(posedge clk or negedge rst_n)begin if(!rst_n) cnt <= 4'd0; else if(cnt < 9) //如果是发送数据则需要一个标志位去启动计数器开始计数 cnt <= cnt + 1'b1; else cnt <= 4'd0; end always@(posedge clk or negedge rst_n)begin if(!rst_n