图4 A、B两种触发器比较 4 RTL级设计
随着数字系统设计的复杂性不断增加,在设计初期指定有效的设计策略对于整个设计是至关重要的。行为描述方式是对系统数学模型的描述。它包括RTL、算法级、系统级的描述。RTL是指通过描述寄存器之间数据流动来描述数字电路系统,是一个数据流的概念.寄存器与寄存器之间的数据处理由组合逻辑完成。RTL级是Verilog较高抽象层次,在这个抽象层次上,模块可以根据设计的算法来实现.而不用考虑具体的实现细节。 4.1寄存器整体电路设计
下面是部分Verilog HDL源代码.描述了数据传输时相关寄存器的功能设置:先是对复位时各个寄存器的初始值,接下来是对寄存器进行功能设计.和数据传输时候产生的中断使能和标志位的设计。
always @ (posedge Peri_clk or posedge RESET)
begin
if(RESET)
begin
outdb<=8’hz; SPICCR<=8’h00; SPICTL<=8’h00; SPIBBR<=8’h00; SPIPRI<=8’h00;
end
end
always @(posedge Peri_clk or posedge RESET)
begin
if(RESET)
shift_out_d<=1’b0;
else
case(1’b1)
spidat_w: SPIDAT<=PeriDB; shifi_out_clk:shift_out_d<=SPIDAT[7];
sample_in_clk:SPIDAT[7:0]<={SPIDAT[6:0],sample in_d};
default;
endcase
end
[email=always@(posedge]always@(posedge[/email] Peri_clk or posedge RESET)
begin
if(RESET)
SPISTS<=8’h00;
else
begin
if(SW_RESET)
SPISTS[7:6]<=2’hO;
else if(int_flag_set)
begin
SPISTS[6]<=1’b1;SPIBUF<=SPIDAT;SPIEMU<=SPIDAT;
end
else if(spibuf_r)
SPISTS[6]<=1’b0;
if(overrun_flag set)
SPISTS[7]<=1’b1;
else if(sts7_clr)
SPISTS[7]<=1’b0;
end
end 4.2整体时序仿真
将上述Verilog代码编译,再写上对应测试代码进行验证。图5是寄存器的写操作的整体时序仿真波形图.验证了上述代码正确可行。