欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Verilog DAY6

程序员文章站 2022-07-13 22:30:23
...

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; 
  aaa@qq.com(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 

Verilog DAY6Verilog DAY6Verilog DAY6
Verilog DAY6
错误:语法错误,某一处少了分号

上一篇: Day6 循环

下一篇: day6