verilog语法知识汇总

本文为日常随记,刚开始接触verilog语言,很多不清楚,仅作为日常记录查阅使用。

1.verilog设计的基本单元——module

module是verilog语言中最基本的一个模块单元,一个module应该具有哪些要素呢?首先对于一个module,我们应该设计好其各个I/O,以及每个I/O的性质,用于与模块外部的信号相联系,让用户知道如何连线。其次,需要对模块内部进行设计,包括变量声明,语句、代码块功能实现等。综上所述,我们可以把一个module分成以下五个部分:
(1)模块名
(2)端口定义
(3)I/O说明
(4)内部信号的声明
(5)模块功能实现

/
//module    模块名 (端口1,端口2,端口3);
//I/O说明 
//内部信号说明
//模块功能实现
//endmodule



//module    模块名 (端口1,端口2,端口3);

module      FreDevider    (                  
                                        Clock,
                                        rst,
                                        Clkout
                                        );
                                        
                                        

//I/O说明 

input Clock;
input rst;
output Clkout;



//内部信号说明

reg Clkout;



//模块功能实现

    always@(posedge Clock or posedge rst)
    begin
        if(rst)
            Clkout<=0;
        else
            Clkout<=~Clkout;
    end



//endmodule

endmodule

当我们已经写好了一种类型的module,在使用的时候就可以直接调用module。使用方法是 模块名+实例名+端口声明+信号声明,一个模块可以定义多个实例。

//已经定义过一个叫FreDevider的module
FreDevider    uut1(                                            //模块名:FreDevider    实例名:uut1
                  .Clock(clock_signal),           // 端口声明: .端口名     信号声明:  (信号名)
                  .rst(rst_signal),
                  .Clkout(clkout_signal)
                  );  
附录

(1)parameter是常量的声明,声明后可替代模块中相同的常量,一般用在常量较多的模块中,方便修改。
parameter MAX = 10;
x = MAX;
y = MAX;
z = MAX;
(2)`define作用于整个工程,而parameter只作用于本模块,一旦define指令被编译,则在整个编译过程中都有效,所以仿真时使用define相对于parameter重声明占用更少的内存

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

541板哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值