Verilog HDL模块化设计

    在高级编程语言中,为了避免在程序中多次重复编写特定的例行程序,可以使用子程序和函数。Verilog语言也可提供类似的能力,即Verilog的任务和函数。它们可以把大型设计模块化,从而使Verilog代码更加容易理解。

    Verilog任务

    任务用关键字task声明,其中包含若干条语句,最后以endtask结尾。这样的语句模块就称为任务。任务必须包含在调用该任务的模块中。它可以有输入和输出端口。任务的端口并不是调用该任务模块的端口,而是用来将它和调用它的模块连接的端口。任务端口仅仅用来在模块和任务之间传递数据。

    例:下图中,我们列出了16选1多路选择器的Verilog代码,该代码实例引用了五个4选1多路选择器电路,这个4选1多路选择器电路由一个独立的名为mux4to1的模块提供。16选1多路选择器也可以使用任务来描述,如图所示。注意观察关键的不同点。任务mux4to1包含在模块mux16to1中。在always模块中通过case语句来调用任务。任务的输出必须是一个变量,因此g是reg型。


[/v1.png]

    Verilog函数

    函数用关键字function声明,包含若干条语句,最后以关键字endfunction结尾。函数必须至少有一个输入,而且只返回一个值到函数被调用的位置。

    下图说明了如何使用函数来完成上图的代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值