幂数在verilog中的表达 IC笔试

在进行工程编译的时候,发现前人的verilog 代码function函数中,有带幂的操作,于是进行了学习。
(一)内容
一般使用操作符“** ”表示幂。
(二)用法
操作符两边放数字。
(三)表示的意义
如5**i表示5的i次幂。

工程具体例子

module sunshine(
input clk,
input rst_n,
output reg [31:0] a
);
parameter  LOGN=clogb2(1024);

always@(posedge clk or negedge rst_n)
if(!rst_n)
	a<=0;
else
	a<=LOGN;

function [31:0] clogb2;
	input [31:0] depth;
	reg [31:0] i,result;
begin
	for(i=0;2**i<depth;i=i+1)
	result=i+1;
	clogb2=i;//返回的结果是i,即求幂的逆计算
end
endfunction

endmodule

1024是2的10次方

下面是仿真源程序和仿真图

`timescale 1 ps/ 1 ps
module sunshine_vlg_tst();
// test vector input registers
reg clk;
reg rst_n;
// wires                                               
wire [31:0]  a;

// assign statements (if any)                          
shushine i1 (
// port map - connection between master ports and signals/registers   
	.a(a),
	.clk(clk),
	.rst_n(rst_n)
);
initial                                                
begin                                                  
// code that executes only once                        
// insert code here --> begin                          
clk=0;
rst_n=1;
#200
rst_n=0;
#300
rst_n=1;                                                       
// --> end                                             
$display("Running testbench");                       
end                                                    
always                                                 
// optional sensitivity list                           
// @(event1 or event2 or .... eventn)                  
begin                                                  
// code executes for every event on sensitivity list   
// insert code here --> begin                          
#10 clk=~clk;                                                                                                   
// --> end                                             
end                                                    
endmodule


仿真图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值