📄 cam_generic_8s.v
字号:
// `ifdef use_addr_valid
// .ADDR_VALID(BUS_ADDR_VALID[5]),
// `endif
// .MATCH_OK(BUS_MATCH_OK[5]));
//CAM_RAMB4 CAM_X_RAMB4_6 (.DATA_IN(DATA_IN[7:0]), .ADDR(ADDR[3:0]), WRITE_ENABLE(BUS_WRITE_ENABLE[6]),
// .ERASE_WRITE(ERASE_WRITE), .WRITE_RAM(WRITE_RAM), .CLK(CLK), .MATCH_ENABLE(MATCH_ENABLE),
// .MATCH_RST(MATCH_RST), .MATCH(MATCH_ARRAY_6));
// Generate the Match Address
//ENCODE_4_LSB ENCODE_X_LSB_6 (.BINARY_ADDR(MATCH_ARRAY_6), .MATCH_ADDR(ADDR_ARRAY_6),
// `ifdef use_addr_valid
// .ADDR_VALID(BUS_ADDR_VALID[6]),
// `endif
// .MATCH_OK(BUS_MATCH_OK[6]));
//CAM_RAMB4 CAM_X_RAMB4_7 (.DATA_IN(DATA_IN[7:0]), .ADDR(ADDR[3:0]), WRITE_ENABLE(BUS_WRITE_ENABLE[7]),
// .ERASE_WRITE(ERASE_WRITE), .WRITE_RAM(WRITE_RAM), .CLK(CLK), .MATCH_ENABLE(MATCH_ENABLE),
// .MATCH_RST(MATCH_RST), .MATCH(MATCH_ARRAY_7));
// Generate the Match Address
//ENCODE_4_LSB ENCODE_X_LSB_7 (.BINARY_ADDR(MATCH_ARRAY_7), .MATCH_ADDR(ADDR_ARRAY_7),
// `ifdef use_addr_valid
// .ADDR_VALID(BUS_ADDR_VALID[7]),
// `endif
// .MATCH_OK(BUS_MATCH_OK[7]));
//CAM_RAMB4 CAM_X_RAMB4_8 (.DATA_IN(DATA_IN[7:0]), .ADDR(ADDR[3:0]), WRITE_ENABLE(BUS_WRITE_ENABLE[8]),
// .ERASE_WRITE(ERASE_WRITE), .WRITE_RAM(WRITE_RAM), .CLK(CLK), .MATCH_ENABLE(MATCH_ENABLE),
// .MATCH_RST(MATCH_RST), .MATCH(MATCH_ARRAY_8));
// Generate the Match Address
//ENCODE_4_LSB ENCODE_X_LSB_8 (.BINARY_ADDR(MATCH_ARRAY_8), .MATCH_ADDR(ADDR_ARRAY_8),
// `ifdef use_addr_valid
// .ADDR_VALID(BUS_ADDR_VALID[8]),
// `endif
// .MATCH_OK(BUS_MATCH_OK[8]));
//CAM_RAMB4 CAM_X_RAMB4_9 (.DATA_IN(DATA_IN[7:0]), .ADDR(ADDR[3:0]), WRITE_ENABLE(BUS_WRITE_ENABLE[9]),
// .ERASE_WRITE(ERASE_WRITE), .WRITE_RAM(WRITE_RAM), .CLK(CLK), .MATCH_ENABLE(MATCH_ENABLE),
// .MATCH_RST(MATCH_RST), .MATCH(MATCH_ARRAY_9));
// Generate the Match Address
//ENCODE_4_LSB ENCODE_X_LSB_9 (.BINARY_ADDR(MATCH_ARRAY_9), .MATCH_ADDR(ADDR_ARRAY_9),
// `ifdef use_addr_valid
// .ADDR_VALID(BUS_ADDR_VALID[9]),
// `endif
// .MATCH_OK(BUS_MATCH_OK[9]));
//CAM_RAMB4 CAM_X_RAMB4_10 (.DATA_IN(DATA_IN[7:0]), .ADDR(ADDR[3:0]), WRITE_ENABLE(BUS_WRITE_ENABLE[10]),
// .ERASE_WRITE(ERASE_WRITE), .WRITE_RAM(WRITE_RAM), .CLK(CLK), .MATCH_ENABLE(MATCH_ENABLE),
// .MATCH_RST(MATCH_RST), .MATCH(MATCH_ARRAY_10));
// Generate the Match Address
//ENCODE_4_LSB ENCODE_X_LSB_10 (.BINARY_ADDR(MATCH_ARRAY_10), .MATCH_ADDR(ADDR_ARRAY_10),
// `ifdef use_addr_valid
// .ADDR_VALID(BUS_ADDR_VALID[10]),
// `endif
// .MATCH_OK(BUS_MATCH_OK[10]));
//CAM_RAMB4 CAM_X_RAMB4_11 (.DATA_IN(DATA_IN[7:0]), .ADDR(ADDR[3:0]), WRITE_ENABLE(BUS_WRITE_ENABLE[11]),
// .ERASE_WRITE(ERASE_WRITE), .WRITE_RAM(WRITE_RAM), .CLK(CLK), .MATCH_ENABLE(MATCH_ENABLE),
// .MATCH_RST(MATCH_RST), .MATCH(MATCH_ARRAY_11));
// Generate the Match Address
//ENCODE_4_LSB ENCODE_X_LSB_11 (.BINARY_ADDR(MATCH_ARRAY_11), .MATCH_ADDR(ADDR_ARRAY_11),
// `ifdef use_addr_valid
// .ADDR_VALID(BUS_ADDR_VALID[11]),
// `endif
// .MATCH_OK(BUS_MATCH_OK[11]));
//CAM_RAMB4 CAM_X_RAMB4_12 (.DATA_IN(DATA_IN[7:0]), .ADDR(ADDR[3:0]), WRITE_ENABLE(BUS_WRITE_ENABLE[12]),
// .ERASE_WRITE(ERASE_WRITE), .WRITE_RAM(WRITE_RAM), .CLK(CLK), .MATCH_ENABLE(MATCH_ENABLE),
// .MATCH_RST(MATCH_RST), .MATCH(MATCH_ARRAY_12));
// Generate the Match Address
//ENCODE_4_LSB ENCODE_X_LSB_12 (.BINARY_ADDR(MATCH_ARRAY_12), .MATCH_ADDR(ADDR_ARRAY_12),
// `ifdef use_addr_valid
// .ADDR_VALID(BUS_ADDR_VALID[12]),
// `endif
// .MATCH_OK(BUS_MATCH_OK[12]));
//CAM_RAMB4 CAM_X_RAMB4_13 (.DATA_IN(DATA_IN[7:0]), .ADDR(ADDR[3:0]), WRITE_ENABLE(BUS_WRITE_ENABLE[13]),
// .ERASE_WRITE(ERASE_WRITE), .WRITE_RAM(WRITE_RAM), .CLK(CLK), .MATCH_ENABLE(MATCH_ENABLE),
// .MATCH_RST(MATCH_RST), .MATCH(MATCH_ARRAY_13));
// Generate the Match Address
//ENCODE_4_LSB ENCODE_X_LSB_13 (.BINARY_ADDR(MATCH_ARRAY_13), .MATCH_ADDR(ADDR_ARRAY_13),
// `ifdef use_addr_valid
// .ADDR_VALID(BUS_ADDR_VALID[13]),
// `endif
// .MATCH_OK(BUS_MATCH_OK[13]));
//CAM_RAMB4 CAM_X_RAMB4_14 (.DATA_IN(DATA_IN[7:0]), .ADDR(ADDR[3:0]), WRITE_ENABLE(BUS_WRITE_ENABLE[14]),
// .ERASE_WRITE(ERASE_WRITE), .WRITE_RAM(WRITE_RAM), .CLK(CLK), .MATCH_ENABLE(MATCH_ENABLE),
// .MATCH_RST(MATCH_RST), .MATCH(MATCH_ARRAY_14));
// Generate the Match Address
//ENCODE_4_LSB ENCODE_X_LSB_14 (.BINARY_ADDR(MATCH_ARRAY_14), .MATCH_ADDR(ADDR_ARRAY_14),
// `ifdef use_addr_valid
// .ADDR_VALID(BUS_ADDR_VALID[14]),
// `endif
// .MATCH_OK(BUS_MATCH_OK[14]));
//CAM_RAMB4 CAM_X_RAMB4_15 (.DATA_IN(DATA_IN[7:0]), .ADDR(ADDR[3:0]), WRITE_ENABLE(BUS_WRITE_ENABLE[15]),
// .ERASE_WRITE(ERASE_WRITE), .WRITE_RAM(WRITE_RAM), .CLK(CLK), .MATCH_ENABLE(MATCH_ENABLE),
// .MATCH_RST(MATCH_RST), .MATCH(MATCH_ARRAY_15));
// Generate the Match Address
//ENCODE_4_LSB ENCODE_X_LSB_15 (.BINARY_ADDR(MATCH_ARRAY_15), .MATCH_ADDR(ADDR_ARRAY_15),
// `ifdef use_addr_valid
// .ADDR_VALID(BUS_ADDR_VALID[15]),
// `endif
// .MATCH_OK(BUS_MATCH_OK[15]));
//Generate Top address CAM 32 words
ENCODE_1_MSB ENCODE_X_MSB (.BINARY_ADDR(BUS_MATCH_OK),
.ADDR_LSB_0(ADDR_ARRAY_0),
.ADDR_LSB_1(ADDR_ARRAY_1),
.MATCH_ADDR(MATCH_ADDR[`addr_width-1:0]),
`ifdef use_addr_valid
.ADDR_VALID(ADDR_VALID),
`endif
.MATCH_OK(MATCH_OK));
//Generate Top address CAM 64 words
//ENCODE_1_MSB ENCODE_X_MSB (.BINARY_ADDR(BUS_MATCH_OK),
// .ADDR_LSB_0(ADDR_ARRAY_0),
// .ADDR_LSB_1(ADDR_ARRAY_1),
// .ADDR_LSB_2(ADDR_ARRAY_2),
// .ADDR_LSB_3(ADDR_ARRAY_3),
// .MATCH_ADDR(MATCH_ADDR[`addr_width-1:0]),
// `ifdef use_addr_valid
// .ADDR_VALID(ADDR_VALID),
// `endif
// .MATCH_OK(MATCH_OK));
//Generate Top address CAM 128 words
//ENCODE_1_MSB ENCODE_X_MSB (.BINARY_ADDR(BUS_MATCH_OK),
// .ADDR_LSB_0(ADDR_ARRAY_0),
// .ADDR_LSB_1(ADDR_ARRAY_1),
// .ADDR_LSB_2(ADDR_ARRAY_2),
// .ADDR_LSB_3(ADDR_ARRAY_3),
// .ADDR_LSB_4(ADDR_ARRAY_4),
// .ADDR_LSB_5(ADDR_ARRAY_5),
// .ADDR_LSB_6(ADDR_ARRAY_6),
// .ADDR_LSB_7(ADDR_ARRAY_7),
// .MATCH_ADDR(MATCH_ADDR[`addr_width-1:0]),
// `ifdef use_addr_valid
// .ADDR_VALID(ADDR_VALID),
// `endif
// .MATCH_OK(MATCH_OK));
//Generate Top address CAM 256 words
//ENCODE_1_MSB ENCODE_X_MSB (.BINARY_ADDR(BUS_MATCH_OK),
// .ADDR_LSB_0(ADDR_ARRAY_0),
// .ADDR_LSB_1(ADDR_ARRAY_1),
// .ADDR_LSB_2(ADDR_ARRAY_2),
// .ADDR_LSB_3(ADDR_ARRAY_3),
// .ADDR_LSB_4(ADDR_ARRAY_4),
// .ADDR_LSB_5(ADDR_ARRAY_5),
// .ADDR_LSB_6(ADDR_ARRAY_6),
// .ADDR_LSB_7(ADDR_ARRAY_7),
// .ADDR_LSB_8(ADDR_ARRAY_8),
// .ADDR_LSB_9(ADDR_ARRAY_9),
// .ADDR_LSB_10(ADDR_ARRAY_10),
// .ADDR_LSB_11(ADDR_ARRAY_11),
// .ADDR_LSB_12(ADDR_ARRAY_12),
// .ADDR_LSB_13(ADDR_ARRAY_13),
// .ADDR_LSB_14(ADDR_ARRAY_14),
// .ADDR_LSB_15(ADDR_ARRAY_15),
// .MATCH_ADDR(MATCH_ADDR[`addr_width-1:0]),
// `ifdef use_addr_valid
// .ADDR_VALID(ADDR_VALID),
// `endif
// .MATCH_OK(MATCH_OK));
//Registered Outputs
always @ (posedge CLK or posedge GLOBAL_RST)
begin
if (GLOBAL_RST)
begin
R_MATCH_ADDR = 0;
R_MATCH_OK = 0;
end
else
begin
R_MATCH_ADDR = MATCH_ADDR;
R_MATCH_OK = MATCH_OK;
end
end //Registered Outputs
endmodule //CAM_generic_8s
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -