1 //-----------------------------------------------------
5 // Coder : Deepak Kumar Tala
6 //-----------------------------------------------------
9 cam_enable , // Cam enable
10 cam_data_in , // Cam data to match
11 cam_hit_out , // Cam match has happened
12 cam_addr_out // Cam output address
15 parameter ADDR_WIDTH = 8;
16 parameter DEPTH = 1 << ADDR_WIDTH;
17 //------------Input Ports--------------
20 input [DEPTH-1:0] cam_data_in;
21 //----------Output Ports--------------
23 output [ADDR_WIDTH-1:0] cam_addr_out;
24 //------------Internal Variables--------
25 reg [ADDR_WIDTH-1:0] cam_addr_out;
27 reg [ADDR_WIDTH-1:0] cam_addr_combo;
31 //-------------Code Starts Here-------
32 always @(cam_data_in) begin
33 cam_addr_combo = {ADDR_WIDTH{1'b0}};
36 for (i=0; i<DEPTH; i=i+1) begin
37 if (cam_data_in[i] && !found_match) begin
42 found_match = found_match;
43 cam_hit_combo = cam_hit_combo;
44 cam_addr_combo = cam_addr_combo;
49 // Register the outputs
50 always @(posedge clk) begin
52 cam_hit_out <= cam_hit_combo;
53 cam_addr_out <= cam_addr_combo;
56 cam_addr_out <= {ADDR_WIDTH{1'b0}};