📄 tb_enc_rev1.v
字号:
`timescale 1ns / 10ps
module tb_enc();
parameter verbose = 1;
// Input Registers
reg clk, rst, lc, dstrb;
reg [11:0] din;
reg [ 3:0] addr;
// Output Wires
wire eob, doe;
wire [19:0] dout;
// Variables
// Luminance
reg [11:0] il [63:0]; //Input List
reg [11:0] iqnr [63:0];
reg [11:0] irle [63:0];
reg [11:0] ihuff[5:0];
reg [19:0] ol [3:0]; //Output List
reg [19:0] orle [5:0];
// chrominance
reg [11:0] cl [63:0]; //Input List
reg [11:0] cqnr [63:0];
reg [11:0] crle [63:0];
reg [11:0] chuff [11:0];
reg [19:0] oc [5:0];
reg [19:0] ocrle [11:0];
reg j;
integer cnt;
integer i;
integer err;
// Generate Clock
always #5 clk <= ~clk;
// Instantiate DUT
jpeg_encoder jpeg_enc(
.clk(clk),
.rst(rst),
.lc(lc),
.eob(eob),
.dstrb(dstrb),
.din(din),
.addr(addr),
.dout(dout),
.doe(doe)
);
// Initialize Values
initial
begin
// Input Lists (luminance values)
#0 il[00] <= 12'd70;
#0 il[01] <= 12'd72;
#0 il[02] <= 12'd70;
#0 il[03] <= 12'd70;
#0 il[04] <= 12'd72;
#0 il[05] <= 12'd68;
#0 il[06] <= 12'd68;
#0 il[07] <= 12'd64;
#0 il[08] <= 12'd103;
#0 il[09] <= 12'd101;
#0 il[10] <= 12'd103;
#0 il[11] <= 12'd100;
#0 il[12] <= 12'd99;
#0 il[13] <= 12'd97;
#0 il[14] <= 12'd94;
#0 il[15] <= 12'd94;
#0 il[16] <= 12'd132;
#0 il[17] <= 12'd132;
#0 il[18] <= 12'd132;
#0 il[19] <= 12'd130;
#0 il[20] <= 12'd129;
#0 il[21] <= 12'd129;
#0 il[22] <= 12'd125;
#0 il[23] <= 12'd121;
#0 il[24] <= 12'd157;
#0 il[25] <= 12'd157;
#0 il[26] <= 12'd155;
#0 il[27] <= 12'd154;
#0 il[28] <= 12'd153;
#0 il[29] <= 12'd150;
#0 il[30] <= 12'd148;
#0 il[31] <= 12'd145;
#0 il[32] <= 12'd168;
#0 il[33] <= 12'd163;
#0 il[34] <= 12'd164;
#0 il[35] <= 12'd162;
#0 il[36] <= 12'd163;
#0 il[37] <= 12'd161;
#0 il[38] <= 12'd161;
#0 il[39] <= 12'd156;
#0 il[40] <= 12'd172;
#0 il[41] <= 12'd170;
#0 il[42] <= 12'd165;
#0 il[43] <= 12'd166;
#0 il[44] <= 12'd163;
#0 il[45] <= 12'd163;
#0 il[46] <= 12'd162;
#0 il[47] <= 12'd158;
#0 il[48] <= 12'd174;
#0 il[49] <= 12'd170;
#0 il[50] <= 12'd167;
#0 il[51] <= 12'd167;
#0 il[52] <= 12'd164;
#0 il[53] <= 12'd163;
#0 il[54] <= 12'd164;
#0 il[55] <= 12'd159;
#0 il[56] <= 12'd174;
#0 il[57] <= 12'd173;
#0 il[58] <= 12'd170;
#0 il[59] <= 12'd167;
#0 il[60] <= 12'd167;
#0 il[61] <= 12'd166;
#0 il[62] <= 12'd166;
#0 il[63] <= 12'd160;
#0 iqnr[0] <= 12'h0ac;
#0 iqnr[1] <= 12'h034;
#0 iqnr[2] <= 12'he12;
#0 iqnr[3] <= 12'hf16;
#0 iqnr[4] <= 12'hff8;
#0 iqnr[5] <= 12'hffa;
#0 iqnr[6] <= 12'h00c;
#0 iqnr[7] <= 12'hff6;
#0 iqnr[8] <= 12'hffd;
#0 iqnr[9] <= 12'hfb0;
#0 iqnr[10] <= 12'hff2;
#0 iqnr[11] <= 12'hffb;
#0 iqnr[12] <= 12'h000;
#0 iqnr[13] <= 12'hffa;
#0 iqnr[14] <= 12'hffb;
#0 iqnr[15] <= 12'h004;
#0 iqnr[16] <= 12'h000;
#0 iqnr[17] <= 12'hffe;
#0 iqnr[18] <= 12'h002;
#0 iqnr[19] <= 12'hffb;
#0 iqnr[20] <= 12'hff4;
#0 iqnr[21] <= 12'hff7;
#0 iqnr[22] <= 12'h001;
#0 iqnr[23] <= 12'hffd;
#0 iqnr[24] <= 12'h001;
#0 iqnr[25] <= 12'hffe;
#0 iqnr[26] <= 12'hffa;
#0 iqnr[27] <= 12'hffc;
#0 iqnr[28] <= 12'h002;
#0 iqnr[29] <= 12'h002;
#0 iqnr[30] <= 12'hffe;
#0 iqnr[31] <= 12'h003;
#0 iqnr[32] <= 12'h001;
#0 iqnr[33] <= 12'hffe;
#0 iqnr[34] <= 12'hffe;
#0 iqnr[35] <= 12'hff9;
#0 iqnr[36] <= 12'hffa;
#0 iqnr[37] <= 12'hffe;
#0 iqnr[38] <= 12'hfff;
#0 iqnr[39] <= 12'hffe;
#0 iqnr[40] <= 12'h001;
#0 iqnr[41] <= 12'hffd;
#0 iqnr[42] <= 12'h001;
#0 iqnr[43] <= 12'h000;
#0 iqnr[44] <= 12'hffc;
#0 iqnr[45] <= 12'hffe;
#0 iqnr[46] <= 12'hfff;
#0 iqnr[47] <= 12'h002;
#0 iqnr[48] <= 12'hffe;
#0 iqnr[49] <= 12'h002;
#0 iqnr[50] <= 12'hffc;
#0 iqnr[51] <= 12'hfff;
#0 iqnr[52] <= 12'hffd;
#0 iqnr[53] <= 12'hfff;
#0 iqnr[54] <= 12'h003;
#0 iqnr[55] <= 12'hffb;
#0 iqnr[56] <= 12'hffd;
#0 iqnr[57] <= 12'hffe;
#0 iqnr[58] <= 12'h002;
#0 iqnr[59] <= 12'hffd;
#0 iqnr[60] <= 12'hffd;
#0 iqnr[61] <= 12'hffd;
#0 iqnr[62] <= 12'h000;
#0 iqnr[63] <= 12'h002;
#0 irle[0] <= 12'h005;
#0 irle[1] <= 12'h002;
#0 irle[2] <= 12'hfeb;
#0 irle[3] <= 12'hff8;
#0 irle[4] <= 12'h000;
#0 irle[5] <= 12'h000;
#0 irle[6] <= 12'h000;
#0 irle[7] <= 12'h000;
#0 irle[8] <= 12'h000;
#0 irle[9] <= 12'hffd;
#0 irle[10] <= 12'h000;
#0 irle[11] <= 12'h000;
#0 irle[12] <= 12'h000;
#0 irle[13] <= 12'h000;
#0 irle[14] <= 12'h000;
#0 irle[15] <= 12'h000;
#0 irle[16] <= 12'h000;
#0 irle[17] <= 12'h000;
#0 irle[18] <= 12'h000;
#0 irle[19] <= 12'h000;
#0 irle[20] <= 12'h000;
#0 irle[21] <= 12'h000;
#0 irle[22] <= 12'h000;
#0 irle[23] <= 12'h000;
#0 irle[24] <= 12'h000;
#0 irle[25] <= 12'h000;
#0 irle[26] <= 12'h000;
#0 irle[27] <= 12'h000;
#0 irle[28] <= 12'h000;
#0 irle[29] <= 12'h000;
#0 irle[30] <= 12'h000;
#0 irle[31] <= 12'h000;
#0 irle[32] <= 12'h000;
#0 irle[33] <= 12'h000;
#0 irle[34] <= 12'h000;
#0 irle[35] <= 12'h000;
#0 irle[36] <= 12'h000;
#0 irle[37] <= 12'h000;
#0 irle[38] <= 12'h000;
#0 irle[39] <= 12'h000;
#0 irle[40] <= 12'h000;
#0 irle[41] <= 12'h000;
#0 irle[42] <= 12'h000;
#0 irle[43] <= 12'h000;
#0 irle[44] <= 12'h000;
#0 irle[45] <= 12'h000;
#0 irle[46] <= 12'h000;
#0 irle[47] <= 12'h000;
#0 irle[48] <= 12'h000;
#0 irle[49] <= 12'h000;
#0 irle[50] <= 12'h000;
#0 irle[51] <= 12'h000;
#0 irle[52] <= 12'h000;
#0 irle[53] <= 12'h000;
#0 irle[54] <= 12'h000;
#0 irle[55] <= 12'h000;
#0 irle[56] <= 12'h000;
#0 irle[57] <= 12'h000;
#0 irle[58] <= 12'h000;
#0 irle[59] <= 12'h000;
#0 irle[60] <= 12'h000;
#0 irle[61] <= 12'h000;
#0 irle[62] <= 12'h000;
#0 irle[63] <= 12'h000;
#0 ihuff[0] <= 12'h003;
#0 ihuff[1] <= 12'h002;
#0 ihuff[2] <= 12'h005;
#0 ihuff[3] <= 12'h004;
#0 ihuff[4] <= 12'h052;
#0 ihuff[5] <= 12'h000;
// Output Lists (luminance)
#0 ol[0] <= 20'h0008e;
#0 ol[1] <= 20'h000af;
#0 ol[2] <= 20'h000fb;
#0 ol[3] <= 20'h000d0;
#0 orle[0] <= 20'h00503;
#0 orle[1] <= 20'h00202;
#0 orle[2] <= 20'h7ea05;
#0 orle[3] <= 20'h7f704;
#0 orle[4] <= 20'h7fc52;
#0 orle[5] <= 20'h00000;
#0 cl[0] <= 12'd151;
#0 cl[1] <= 12'd147;
#0 cl[2] <= 12'd152;
#0 cl[3] <= 12'd140;
#0 cl[4] <= 12'd138;
#0 cl[5] <= 12'd125;
#0 cl[6] <= 12'd136;
#0 cl[7] <= 12'd160;
#0 cl[8] <= 12'd157;
#0 cl[9] <= 12'd148;
#0 cl[10] <= 12'd152;
#0 cl[11] <= 12'd137;
#0 cl[12] <= 12'd124;
#0 cl[13] <= 12'd105;
#0 cl[14] <= 12'd108;
#0 cl[15] <= 12'd144;
#0 cl[16] <= 12'd152;
#0 cl[17] <= 12'd151;
#0 cl[18] <= 12'd146;
#0 cl[19] <= 12'd128;
#0 cl[20] <= 12'd99;
#0 cl[21] <= 12'd73;
#0 cl[22] <= 12'd75;
#0 cl[23] <= 12'd116;
#0 cl[24] <= 12'd154;
#0 cl[25] <= 12'd148;
#0 cl[26] <= 12'd145;
#0 cl[27] <= 12'd111;
#0 cl[28] <= 12'd91;
#0 cl[29] <= 12'd68;
#0 cl[30] <= 12'd62;
#0 cl[31] <= 12'd98;
#0 cl[32] <= 12'd156;
#0 cl[33] <= 12'd144;
#0 cl[34] <= 12'd147;
#0 cl[35] <= 12'd93;
#0 cl[36] <= 12'd97;
#0 cl[37] <= 12'd105;
#0 cl[38] <= 12'd61;
#0 cl[39] <= 12'd82;
#0 cl[40] <= 12'd155;
#0 cl[41] <= 12'd139;
#0 cl[42] <= 12'd149;
#0 cl[43] <= 12'd76;
#0 cl[44] <= 12'd101;
#0 cl[45] <= 12'd140;
#0 cl[46] <= 12'd59;
#0 cl[47] <= 12'd74;
#0 cl[48] <= 12'd148;
#0 cl[49] <= 12'd135;
#0 cl[50] <= 12'd147;
#0 cl[51] <= 12'd71;
#0 cl[52] <= 12'd114;
#0 cl[53] <= 12'd158;
#0 cl[54] <= 12'd79;
#0 cl[55] <= 12'd66;
#0 cl[56] <= 12'd135;
#0 cl[57] <= 12'd120;
#0 cl[58] <= 12'd133;
#0 cl[59] <= 12'd92;
#0 cl[60] <= 12'd133;
#0 cl[61] <= 12'd176;
#0 cl[62] <= 12'd103;
#0 cl[63] <= 12'd60;
#0 cqnr[0] <= 12'hf82;
#0 cqnr[1] <= 12'h139;
#0 cqnr[2] <= 12'h07b;
#0 cqnr[3] <= 12'h084;
#0 cqnr[4] <= 12'hfdd;
#0 cqnr[5] <= 12'h02c;
#0 cqnr[6] <= 12'h016;
#0 cqnr[7] <= 12'h049;
#0 cqnr[8] <= 12'hf71;
#0 cqnr[9] <= 12'h020;
#0 cqnr[10] <= 12'h009;
#0 cqnr[11] <= 12'hff1;
#0 cqnr[12] <= 12'hfcd;
#0 cqnr[13] <= 12'hf4b;
#0 cqnr[14] <= 12'hfd2;
#0 cqnr[15] <= 12'hfb5;
#0 cqnr[16] <= 12'h080;
#0 cqnr[17] <= 12'h04a;
#0 cqnr[18] <= 12'h00f;
#0 cqnr[19] <= 12'hfe7;
#0 cqnr[20] <= 12'hff1;
#0 cqnr[21] <= 12'hff9;
#0 cqnr[22] <= 12'h00b;
#0 cqnr[23] <= 12'hff2;
#0 cqnr[24] <= 12'h01b;
#0 cqnr[25] <= 12'hfde;
#0 cqnr[26] <= 12'h01e;
#0 cqnr[27] <= 12'h087;
#0 cqnr[28] <= 12'h015;
#0 cqnr[29] <= 12'hfa3;
#0 cqnr[30] <= 12'h00f;
#0 cqnr[31] <= 12'hfe4;
#0 cqnr[32] <= 12'h003;
#0 cqnr[33] <= 12'h00e;
#0 cqnr[34] <= 12'hffd;
#0 cqnr[35] <= 12'hfff;
#0 cqnr[36] <= 12'h001;
#0 cqnr[37] <= 12'hff8;
#0 cqnr[38] <= 12'hff2;
#0 cqnr[39] <= 12'h005;
#0 cqnr[40] <= 12'hfea;
#0 cqnr[41] <= 12'hffb;
#0 cqnr[42] <= 12'hffb;
#0 cqnr[43] <= 12'h008;
#0 cqnr[44] <= 12'h027;
#0 cqnr[45] <= 12'h00f;
#0 cqnr[46] <= 12'hffb;
#0 cqnr[47] <= 12'hfff;
#0 cqnr[48] <= 12'hffe;
#0 cqnr[49] <= 12'h001;
#0 cqnr[50] <= 12'h001;
#0 cqnr[51] <= 12'hffa;
#0 cqnr[52] <= 12'hfe8;
#0 cqnr[53] <= 12'h005;
#0 cqnr[54] <= 12'h004;
#0 cqnr[55] <= 12'hffc;
#0 cqnr[56] <= 12'h001;
#0 cqnr[57] <= 12'hffa;
#0 cqnr[58] <= 12'hfff;
#0 cqnr[59] <= 12'hfff;
#0 cqnr[60] <= 12'h005;
#0 cqnr[61] <= 12'hff6;
#0 cqnr[62] <= 12'hffc;
#0 cqnr[63] <= 12'h000;
#0 crle[0] <= 12'hffc;
#0 crle[1] <= 12'h009;
#0 crle[2] <= 12'h003;
#0 crle[3] <= 12'h003;
#0 crle[4] <= 12'hfff;
#0 crle[5] <= 12'h001;
#0 crle[6] <= 12'h000;
#0 crle[7] <= 12'h001;
#0 crle[8] <= 12'hffd;
#0 crle[9] <= 12'h000;
#0 crle[10] <= 12'h000;
#0 crle[11] <= 12'h000;
#0 crle[12] <= 12'h000;
#0 crle[13] <= 12'hfff;
#0 crle[14] <= 12'h000;
#0 crle[15] <= 12'h000;
#0 crle[16] <= 12'h001;
#0 crle[17] <= 12'h000;
#0 crle[18] <= 12'h000;
#0 crle[19] <= 12'h000;
#0 crle[20] <= 12'h000;
#0 crle[21] <= 12'h000;
#0 crle[22] <= 12'h000;
#0 crle[23] <= 12'h000;
#0 crle[24] <= 12'h000;
#0 crle[25] <= 12'h000;
#0 crle[26] <= 12'h000;
#0 crle[27] <= 12'h001;
#0 crle[28] <= 12'h000;
#0 crle[29] <= 12'h000;
#0 crle[30] <= 12'h000;
#0 crle[31] <= 12'h000;
#0 crle[32] <= 12'h000;
#0 crle[33] <= 12'h000;
#0 crle[34] <= 12'h000;
#0 crle[35] <= 12'h000;
#0 crle[36] <= 12'h000;
#0 crle[37] <= 12'h000;
#0 crle[38] <= 12'h000;
#0 crle[39] <= 12'h000;
#0 crle[40] <= 12'h000;
#0 crle[41] <= 12'h000;
#0 crle[42] <= 12'h000;
#0 crle[43] <= 12'h000;
#0 crle[44] <= 12'h000;
#0 crle[45] <= 12'h000;
#0 crle[46] <= 12'h000;
#0 crle[47] <= 12'h000;
#0 crle[48] <= 12'h000;
#0 crle[49] <= 12'h000;
#0 crle[50] <= 12'h000;
#0 crle[51] <= 12'h000;
#0 crle[52] <= 12'h000;
#0 crle[53] <= 12'h000;
#0 crle[54] <= 12'h000;
#0 crle[55] <= 12'h000;
#0 crle[56] <= 12'h000;
#0 crle[57] <= 12'h000;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -