自学Verilog(一)

Verilog基本概念

了解Verilog HDL程序的框架

刷题推荐

链接: Verilog刷题

Verilog语法的基本概念

最重要的几个基本概念:并行性、层次结构性、可综合性和测试平台

例1

/*此程序通过连续赋值语句描述了一个名为adder的3位加法器*/
module adder (count,sum,a,b,cin);
	input [2:0] a,b;
	input cin;
	output count;
	output [2:0] sum;
	assign {count,sum} = a + b + cin;
endmodule

从例子中可以看出整个Verilog HDL程序是位于module 和 endmodule 声明语句之间的。

例2

/*此程序通过连续赋值语句描述了一个名为compare的比较器*/
module compare (equal,a,b);
	output equal;				//声明输出信号equal
	input [1:0] a,b;			//声明输入信号a,b
	assign equal = (a == b)? 1:0
	/*如果a、b两个输入信号相等,输出为1,否则为0*/
endmodule

在这个程序中,/* …*/的作用和 // 表示注释部分。

例3

/*此程序描述了一个名为trist2的三态驱动器*/
module trist2(out,in,enable);
	output out;
	input in,enable;
	bufifl mybuf(out,in,enable);
endmodule

程序调用一个在Verilog语言提供的原语库中现存的三态驱动器元件bufifl来实现其逻辑功能。这个调用过程也称为库元件bufifl的实例化,在本模块中它被具体化为mybuf。
原语库了解链接: Verilog基本语法——原语篇(Gate门)

例4

/*此程序通过另一种方法描述了一个三态门*/
module trist1(sout,sin,ena);
	output sout;
	input sin,ena;
	mytri tri_inst(.out(sout),.in(sin),.enable(ena));
	/*调用有mytri模块定义的实例元件tri_inst,即把已定义的模块myfri在本模块中具体化为tri_inst*/
endmodule

module mytir(out,in,enable);
	output out;
	input in,enable;
	assign out = enable?in:bz;
endmodule

在这个例子中存在两个模块,模块trist1调用由模块mytri定义的实例部件tri_inst,模块trist1是上层模块,模块mytri则被称为子模块。在实例部件tri_inst中,带“ . ”的表示被引用模块的端口,名称必须与被引用模块的端口一致,小括号中表示在本模块中与之连接的线路。

自学Verilog(二)链接: 常用Verilog语法(1)

这里是引用《Verilog数字系统设计教程》——夏宇闻

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值