⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 16-bit数的偶数奇偶校验.txt

📁 16-bit数的偶数奇偶校验及阶乘运算
💻 TXT
字号:
16-bit数的偶数奇偶校验(even parity)。结果延迟三个时钟 周期后赋给1-bit输出信号。时钟信号clock可用全程变量操作。完成一个 模块用以检验所定义的task.
/**********************************************************
 *	File:	even.i
 *	Description: This is an include file to define a
 *		task calculating even parity of given data
 **********************************************************/
task even;
input[15:0] din;	// data in
output res;		// result
reg	tmp;		// temporary variable
begin
    tmp = ~^din;
    repeat(3) @(posedge clock);
    res = tmp;
end
endtask
/**************************************************************
 *	File:	test.v
 *	Description: This module is the test bench to run even
 *		parity task
 **************************************************************/
`timescale 1ns/1ns

module test;
    reg		clock;		// clock
    reg[15:0]	data;		// data
    reg		par,		// parity result from task
		x;		// parity calculated in test bench
    integer	i;		// loop variable

    always #5 clock = !clock;	// generate the clock signal

    initial begin
	clock = 0;
	$vcdpluson;
	for(i=0;i<65536;i=i+1) begin
	    data = i[15:0];
	    even(data,par);	// call the task
	    x = !(^data);	// calculate the even parity
	    if(x!==par) begin
		$display("Error: data=%X, task result=%b, expected=%b",
			data,par,x);
		#20 $finish;
	    end
	end
	$display("All test completed.");
	#10 $finish;
    end
    `include	"even.i"
endmodule


4-bit数的阶乘。返回值为一32bit数。计算结果延迟 10个时间单位后赋给输出信号。完成一个模块用以检验所定义的task.
/********************************************************
 *	File:	factorial.i
 *	Description: This is an include file to define
 *		a task for calculating factorial
 ********************************************************/

task factorial;
input[3:0] din;		// data input
output[31:0] fac;	// result output
reg[31:0] tmp;		// temporary variable
begin
    tmp = 1;
    while(din!=0) begin
	tmp = tmp * din;
	din = din-1;
    end
    #10 fac = tmp;
end
endtask
/************************************************************
 *	File:	test.v
 *	Description: This module is a test bench to test
 *		the factorial task
 ************************************************************/
`timescale 1ns/1ns

module test;
    reg[3:0]	d;	// data to operate factorial on
    integer	i,j;	// loop variables
    reg[31:0]	x;	// result
    integer	y;	// test bench calculated factorial

    `include	"factorial.i"

    initial begin
	$vcdpluson;
	for(i=0;i<16;i=i+1) begin
	    d = i[3:0];
	    factorial(d,x);
	    y = 1;
	    if(d>0) for(j=1;j<=i;j=j+1) y = y*j;
	    if(x!==y) begin
		$display("Error: d=%d, task result=%d, expected=%d",
		    d,x,y);
		#20 $finish;
	    end
	end
	$display("All tests completed.");
    end
endmodule

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -