?? 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 + -