How to use the cam module?
Jzone315 opened this issue · 3 comments
Hi:
Sorry to bother you again.
This time i am using the cam module , but i found some of the ports are being unspecified, so i want to know is there any timing specifying of the ports of cam.v, for example what did the ports write_enable and write_delete mean?
Thanks a lot for your help.
In addition, what is the parameter SLICE_WIDTH mean? i had no idea of how it works.
So what the CAM module does is split the data bus into slices, with each slice corresponding to an SRL16, SRL32, or block RAM. SLICE_WIDTH
determines how wide the slices are. If you want SRL16, set it to 4. If you want SRL32, set it to 5. If you want to use 512x32 BRAMs, set it to 9. What you select will depend on what resources your target device has, the required size of the CAM, etc. In principle, you can set this value to whatever you want and the CAM will work, it just might consume a lot more logic resources.
write_enable
works just like any other synchronous RAM - set it high with the other write signals to initiate a write operation. write_delete
asserted together with write_enable
causes the entry at write_addr
to be removed from the CAM. Also, these control signals are ignored while write_busy
is high, indicating that the CAM is performing an internal operation.
Thanks a lot, your answer has solved many of my questions, i am using the CAM module in both xilinx kintex and kintex ultrascale platform, with CAM_STYLE chose "BRAM" mode, i had did the verification, 9 seemed to be the best parameter for both, thanks again, i had learned a lot.