LogIn E-mail
¼³°èÀ̾߱â
[verilog]array_module
# 30 JMJS    05.12.8 09:09

module array_module (clk, rst, in_data, out_data);

  parameter Depth = 17;
  parameter Width = 64;

  input              clk;
  input              rst;
  input  [Width-1:0] in_data;
  output [Width-1:0] out_data;

  reg         [Depth-1:0] addr;
  reg    [Width-1:0] MemCore [0:2^Depth-1];

  always @(posedge clk or negedge rst) begin
    if (~rst) begin
            addr <= 0;
    end
    else begin
                MemCore[addr] <= in_data;
            addr <= addr + 1;
    end
  end

  assign out_data = MemCore[addr];

endmodule

module tb_array_module ();

  parameter Depth = 17;
  parameter Width = 64;
  parameter HalfClock = 20;

  reg                clk;
  reg                rst;
  reg                wr_en;
  reg    [Depth-1:0] addr;
  reg    [Width-1:0] in_data;
  wire   [Width-1:0] out_data;

  always begin
    clk <= 1'b0;
    #HalfClock;
    clk <= 1'b1;
    #HalfClock;
  end

  initial begin
    Initial;
    Memory_Write;
    Memory_Read;
    $stop;
  end

task Initial;
  begin
    rst            = 1'b1;
    wr_en   = 1'b0;
    in_data = 64'h0;
    addr    = 17'h0;
    #1000;
    rst     = 1'b0;
    #1000;
    rst     = 1'b1;
    #1000;
  end
endtask

task Memory_Write;
integer i;
  begin
    @(negedge clk);
    wr_en = 1'b1;
    for (i=0; i<2^Depth; i=i+1) begin
      addr    = i;
      in_data = i;
      @(negedge clk);
    end
    wr_en = 1'b0;
    repeat(5) @(negedge clk);
  end
endtask

task Memory_Read;
integer i;
  begin
    @(posedge clk);
    for (i=0; i<2^Depth; i=i+1) begin
      addr   = i;
      @(posedge clk);
    end
    repeat(5) @(posedge clk);
  end
endtask

array_module array_module (clk, rst, in_data, out_data);

endmodule

°Ô½Ã¹°: 96 °Ç, ÇöÀç: 1 / 1 ÂÊ
¹øÈ£ Á¦       ¸ñ ÀÛ¼ºÀÚ µî·ÏÀÏ ¹æ¹®
98  interface JMJS 25.1.20 340
97  test plusargs value plusargs JMJS 24.9.5 354
96  color text JMJS 24.7.13 398
95  draw_hexa.v JMJS 10.6.17 2551
94  jmjsxram3.v JMJS 10.4.9 2477
93  Verilog document JMJS 11.1.24 3073
92  [verilog]o=(c1)? (c2)? 0:1 : (c3)? 2:3; JMJS 09.3.31 2664
91  [verilog]forever, repeat, strobe, realtime, ... JMJS 09.7.6 4099
90  gtkwave PC version JMJS 09.3.30 2484
89  ncsim option example JMJS 08.12.1 4832
88  [¿µ»ó]keywords for web search JMJS 08.12.1 2441
87  [Verilog]fdisplay fopen fscanf JMJS 11.1.24 6557
86  ncverilog option example JMJS 10.6.8 8295
85  [Verilog]Latch example JMJS 08.12.1 3033
84  Pad verilog example JMJS 01.3.16 4981
83  [ModelSim] vector JMJS 01.3.16 2664
82  RTL Code ºÐ¼®¼ø¼­ JMJS 09.4.29 2902
81  [temp]PIPE JMJS 08.10.2 2305
80  [temp]always-forever ¹«ÇÑ·çÇÁ JMJS 08.10.2 2385
79  YCbCr2RGB.v JMJS 10.5.12 2571
78  [VHDL]rom64x8 JMJS 09.3.27 2119
77  [function]vector_compare JMJS 02.6.19 2000
76  [function]vector2integer JMJS 02.6.19 2232
75  [VHDL]ram8x4x8 JMJS 08.12.1 1943
74  [¿¹]shift JMJS 02.6.19 2413
73  test JMJS 09.7.20 2275
72  test JMJS 09.7.20 1800
71  test JMJS 09.7.20 1986
70  test JMJS 09.7.20 2076
69  test JMJS 09.7.20 2125
68  test JMJS 09.7.20 2067
67  test JMJS 09.7.20 1996
66  test JMJS 09.7.20 1940
65  test JMJS 09.7.20 2065
64  test JMJS 09.7.20 2254
63  test JMJS 09.7.20 2299
62  test JMJS 09.7.20 2182
61  VHDLÀÇ ¿¬»êÀÚ ¿ì¼±¼øÀ§ JMJS 09.7.20 3962
60  test JMJS 09.7.20 1729
59  test JMJS 09.7.20 2110
58  test JMJS 09.7.20 2019
57  test JMJS 09.7.20 1984
56  test JMJS 09.7.20 2019
55  verilog Çаú »ùÇð­ÀÇ JMJS 16.5.30 2438
54  [verilog]create_generated_clock JMJS 15.4.28 2431
53  [Verilog]JDIFF JMJS 14.7.4 1862
52  [verilog]parameter definition JMJS 14.3.5 2130
51  [verilog]sformat fopen fscanf fwrite fclose JMJS 12.1.31 5075
50  Verilog File I/0,Verilog file handling JMJS 12.1.30 2703
49  Verdi JMJS 10.4.22 3624
48  draw hexa JMJS 10.4.9 2094
47  asfifo - Async FIFO JMJS 10.4.8 1957
46  VHDLÀ» ÀÌ¿ëÇÑ È¸·Î¼³°èÀÇ ÀåÁ¡ JMJS 02.3.14 3643
45  synplify batch JMJS 10.3.8 2848
44  ÀüÀڽðè Type A JMJS 08.11.28 2346
43  I2C Webpage JMJS 08.2.25 2173
42  PC¿¡¼­ °£´ÜÈ÷ Verilog ½ÇÇàÇØº¸±â (Icarus Verilog) JMJS 13.1.14 6255
41  [Verilog]vstring JMJS 17.9.27 2370
40  Riviera Simple Case JMJS 09.4.29 3455
39  [VHDL]DES Example JMJS 07.6.15 3339
38  [verilog]RAM example JMJS 09.6.5 3100
37  ROM example [VerilogHDL, RTL] JMJS 04.5.27 2345
36  Jamie's VHDL Handbook JMJS 08.11.28 3044
35  Dualport RAM example [VerilogHDL, RTL] JMJS 04.5.27 3622
34  RTL Job JMJS 09.4.29 2558
33  [VHDL]type example - package TYPES JMJS 06.2.2 1986
32  [verilog]`define `ifdef `elsif `else `endif ... JMJS 10.5.11 9679
30  [verilog]array_module JMJS 05.12.8 2586
29  [verilog-2001]generate JMJS 05.12.8 3729
28  protected JMJS 05.11.18 2400
27  design¿¡ latch°¡ ÀÖÀ¸¸é ¾ÈµÇ³ª¿ä? JMJS 09.7.20 3115
26  busÀÇ µ¥ÀÌŸ¸¦ °¢ bitº°·Î Ãâ·ÂÇÏ´Â ¹æ¹ýÀº? JMJS 04.11.9 2096
25  component¸¦ »ý¼ºÇؼ­ ´Ù¸¥ °÷¿¡¼­ È£ÃâÇÏ´Â ¹æ¹ý JMJS 04.11.4 2729
23  Array Of Array JMJS 04.8.16 2270
22  dumpfile, dumpvars JMJS 04.7.19 3974
21  Vending Machine Jamie 02.12.16 10409
20  Mini Vending Machine1 Jamie 02.12.10 7257
19  Mini Vending Machine Jamie 02.12.6 10095
18  Key Jamie 02.11.29 5309
17  Stop Watch Jamie 02.11.25 5829
16  Mealy Machine Jamie 02.8.29 7035
15  Moore Machine Jamie 02.8.29 18369
14  Up Down Counter Jamie 02.8.29 4399
13  Up Counter Jamie 02.8.29 3093
12  Edge Detecter Jamie 02.8.29 3307
11  Concept4 Jamie 02.8.28 2243
10  Concept3 Jamie 02.8.28 2364
9  Concept2_1 Jamie 02.8.28 2262
8  Concept2 Jamie 02.8.28 2351
7  Concept1 Jamie 02.8.26 2360
6  Tri State Buffer Jamie 02.8.26 3958
5  8x3 Encoder Jamie 02.8.28 4497
4  3x8 Decoder Jamie 02.8.28 4135
3  4bit Comparator Jamie 02.8.26 3510
2  °¡À§ ¹ÙÀ§ º¸ °ÔÀÓ Jamie 02.8.26 5655
1  Two Input Logic Jamie 02.8.26 2770
[1]