测试仿真流程
测试仿真环境为win系统下的quartus prime + modelsim
测试仿真流程参照我之前的教程
Verilog数字系统设计教程第4版夏宇闻——第三部分练习一
模块源代码
//----------tryfunct.v----------
module tryfunct(clk,n,result,reset);
output[31:0] result;
input[3:0] n;
input reset,clk;
reg[31:0] result;
always@(posedge clk)
begin
if(!reset)
result <= 0;
else
begin
result <= n* factorial(n)/((n*2)+1);
end
end
function[31:0] factorial; //函数定义,返回的是一个32位的数
input[3:0] operand; //输入只有一个4位的操作数
reg[31:0] index; //函数内部计数用中间变量
begin
factorial = operand?1:0; //先定义操作数为零时函数的输出为零,不为零时为1
for(index=2;index<=operand;index=index+1)
factorial=index*factorial; //表示阶乘的算术迭代运算
end
endfunction
endmodule
测试模块代码
//----------tryfunct.vt----------
`timescale 1 ns/ 100 ps
`define clk_cycle 50
module tryfunct_vlg_tst();
reg clk;
reg [3:0] n,i;
reg reset;
wire [31:0] result;
initial
begin
clk = 0;
n = 0;
reset = 1;
#100 reset = 0;
#100 reset = 1;
for(i=0;i<=15;i=i+1)
begin
#200 n=i;
end
#100 $stop;
end
always #`clk_cycle clk = ~clk;
tryfunct i1 (
.clk(clk),
.n(n),
.reset(reset),
.result(result)
);
endmodule