Verilog DAY6

1 reg 寄存器 综合成物理连线,锁存器和触发器 always,initial
Wire 综合成真实的物理连线 assign
阻塞赋值 = 用于组合逻辑
非阻塞赋值 <= 用于时序逻辑
Parameter 参数 define宏定义 起作用的范围不同
(1)作用域不同。parameter作用于声明的那个文件;define从编译器读到这条指令开始到编译结束都有效,或者遇到undef命令使之失效,可以应用于整个工程。
(2)传递功能不同。parameter可以用作模块例化时的参数传递,实现参数化调用;define语句则没有此作用。define语句可以定义表达式,而parameter只能用于定义变量。
比较点 任务 函数
输入输出 可以有任意多个输入输出 至少一输入不能有输出和双向端口
触发事件控制 任务不能出现always语句;可以包含延时控制语句(#),但只能面向仿真,不能综合 函数中不能出现always、#这样的语句,要保证函数执行在零时间内完成
返回值 通过输出端口传递返回值 通过函数名返回,只有一个返回值
中断 可以由disable中断 不允许由disable中断
调用 任务只能在过程语句中调用,而不能在连续赋值语句中调用 函数可作为赋值操作的表达式,用于过程赋值和连续赋值语句
调用其它 可以调用其它任务和函数 只能调用函数,不能调用任务
其它说明 任务调用语句可以作为一条完整的语句出现 函数调用语句不能单独作为一条语句,出现只能作为赋值语句的右端操作数

2

 module detect(clk,rst_n,in,out); 
  input clk,rst_n,in; 
  output out; 
  wire out; 
  reg temp1,temp2; 
  always@(posedge clk or negedge rst_n) 
    if(!rst_n) 
      begin 
        temp1<=1'b1; 
        temp2<=1'b1; 
      end 
    else 
      begin 
        temp1<=in; 
        temp2<=temp1; 
      end 
  assign out=temp2&(~temp1); 
  endmodule 


`timescale 1ns/1ns  
module detect_tb; 
  reg clk,rst_n,in; 
  wire out; 
  detect U1(clk,rst_n,in,out); 
  initial 
     begin 
       clk=1'b1; 
       rst_n=1'b1; 
       #10 rst_n=1'b0; 
       #50 rst_n=1'b1; 
     end 
always #10 clk=~clk; 
  always @(posedge clk) 
      in<={$random}%2; 
endmodule 

在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述
错误:语法错误,某一处少了分号

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值