有没有EDA高手帮一下忙,把下面的程序解释一下,要详细些。每一行添加注释。先谢谢了

module contr_1(lod,clk,aq,qa,d); //模块开始

input[7:0] aq; //输入单字节aq

input clk; //输入时钟信号

output reg[7:0] qa; //输出8为寄存器类型

output reg[11:0]d; //输出12位寄存器类型

output reg lod; //输出寄存器类型

reg [1:0] qc; //2为寄存器类型qc

initial begin qa='h19;d='b001100001100;end //初始化 qa、d

always @(negedge clk ) // 时钟下降沿执行本alway下面的语句

begin if (aq==0) lod=0; //

else lod=1; end //结束本进程

always @(negedge lod ) //LOD下降沿执行本alway下面的语句

begin qc=qc+1; //得到qc的值

case (qc) //执行CASE语句

0 :begin qa='h19;d='b001100001100;end //qc=0

1 :begin qa='h03;d='b010100010100;end //qc=1

2 :begin qa='h09;d='b100001100001;end //qc=2

3 :begin qa='h03;d='b100010100010;end //qc=3

default :qa='h00; 其他值

endcase //结束case

end //结束本进程

endmodule //结束模块