傻大方


首页 > 知识库 > >

SystemVerilog|SystemVerilog硬件设计及建模第6章ppt课件( 二 )


按关键词阅读: 硬件 SystemVerilo 课件 设计 PPT 建模



10、块,always_latch过程块表示描述的是基于锁存器的逻辑 , always_latch过程块的语义规则与always_comb一样 , 能够推断出敏感表;在锁存逻辑中 , 过程块的输出变量不需要对所有可能的输入条件响应;同样always_latch中赋值的变量不能再次在其它过程块被赋值;always_latch过程块也会在0时刻自动执行一次 。
/使用always_latch过程块锁存输入脉冲 module register_reader (output logic 4 : 0 read_p, input clk, ready, resetn);
logic enable, overflow;
alw 。

11、ays_latch begin if (!resetn) enable = 0;
else if (ready) enable = 1;
else if (overflow) enable = 0;
end always (posedge clk, negedge resetn) begin if (!resetn) overflow, read_p = 0;
else if (enable) overflow, read_p = read_p + 1;
end endmodule,always_latch if (enable) q = d;
/always_comb / if (enabl 。

12、e) q = d,6.2.3 时序逻辑过程块,always_ff过程块描述时序逻辑 , always_ff过程块的敏感表必须列出 , 以确定时序逻辑的置位/复位是同步还是异步的 , 如果代码不能综合出时序逻辑时 , 软件工具能够报告警告信息 。
always_ff过程块要求明确指定敏感表中的信号是posedge还是negedge , 这是对时序逻辑敏感列表的综合要求 , 以确保模拟结果与综合结果一致 。
always_ff过程块禁止在块开头以外的地方使用事件控制! always_ff (posedge clk, negedge resetn) if (!resetn) state = st0;
else state =。

13、next_state,6.3 对任务和函数的改进,任务和函数的隐式语句组:Verilog中 , 如果任务或函数包含多条语句时必须写在begin end之间 , 对任务也允许使用fork join结构 , 对SystemVerilog则可以省略begin end 。
function states_t nextState(states_t state);
nextState = state;
case (state) WAIT : if (start) nextState = LOAD;
LOAD : if (done) nextState = STORE;
STORE : nextState = WAIT;


14、 endcase endfunction,6.3 对任务和函数的改进,返回函数值:return语句的优先级高于用函数名返回值 function add_and_inc (input 31 : 0 a, b);
begin add_and_inc = a + b + 1;
end endfunction function add_and_inc (input 31 : 0 a, b);
return a + b + 1;
endfunction function add_and_inc (input 31 : 0 a, b);
add_and_inc = a + b;
return + add_ 。

15、and_inc;
endfunction,6.3 对任务和函数的改进,在任务和函数结束前返回:Verilog必须到达任务或函数结尾才能退出,function automatic int log2 (input int n);
if ( n 1) begin n = n / 2;
log2 = log2 + 1;
end end endfunction,function automatic int log2 (input int n);
if ( n 1) begin n = n / 2;
log2 +;
end endfunction,6.3 对任务和函数的改进,void类型函数:void函数 。

16、无返回值;与通常函数语法和语义限制一样 , 如不能包含任何类型的延迟或事件控制 , 也不能使用非阻塞赋值语句;void函数可以象任务一样被调用;void函数可以有output和inout的形式参数;void函数克服了函数不能调用任务的缺陷 。
typedef struct logic valid;
logic 7 : 0 check;
logic 63 : 0 data;
packet_t;
function void fill_packet ( input logic 63 : 0 data_in, output packet_t data_out);
data_out.data = https://www.renrendoc.com/paper/data_in;


17、 foreach (data_out.checki) data_out.checki = data_in(8 * i) + : 8;
data_out.valid = 1;
endfunction,6.3 对任务和函数的改进,使用名称传递任务或函数的参数:任务或函数调用时 , Verilog只允许按照任务或函数的形式参数的顺序来传递参数 , 否则就会出现编码错误 , SystemVerilog可以使用形式参数的名称而不是顺序来传递参数值 , 以减少错误 。
always (posedge clk) result = divide (b, a);
function int divide (input int nu 。

18、merator, denominator);
if ( denominator = 0) begin $display (“Error! divided by zero”);
return 0;
end else return (numerator / denomirator);
endfunction /result = divide( .denomirator(b), .numerator(a,6.3 对任务和函数的改进,增强型函数形式参数:Verilog的函数只允许有input , 唯一的输出就是它的返回值 , SystemVerilog的函数可以象任务一样声明input、output和inou 。

19、t类型的形式参数 , 扩展了函数的建模范围 。
对带输出的函数调用限制:不能在以下情况中调用(从综合角度考虑) 事件表达式 使用过程持续赋值的表达式 不在过程语句内的表达式 无形式参数的函数:Verilog要求函数至少有一个输入形式参数 , SystemVerilog允许函数没有形式参数 function 63 : 0 add ( input 63 : 0 a, b, output overflow);
overflow, add = a + b;
endfunction,6.3 对任务和函数的改进,形式参数的缺省方向和类型:Verilog中函数的每个形式参数必须显式声明为input , 而任务的每个形式参 。


来源:(未知)

【学习资料】网址:/a/2021/0207/0021331047.html

标题:SystemVerilog|SystemVerilog硬件设计及建模第6章ppt课件( 二 )


上一篇:Web|Web服务器配置ppt课件

下一篇:放大器|单级放大器设计与实验