![no use](https://cdn.opencores.org/img/pils_lt.png)
![no use](https://cdn.opencores.org/img/pil_lt.png)
![no use](https://cdn.opencores.org/img/pil_rt.png)
![no use](https://cdn.opencores.org/img/pils_rt.png)
CAN Controller bug in can_fifo.v
by JeffHanoch on Mar 9, 2005 |
JeffHanoch
Posts: 6 Joined: Jun 9, 2008 Last seen: May 22, 2024 |
||
I was using the CAN controller in an FPGA and was seeing some strange
behavior. We would halt the CPU debugger but the activity on the CAN
bus would continue. This filled up the FIFOs in the controller as
expected, but it would get into some strange state where we could not
read correct data.
Upon further logic simulation I narrowed down what I think the problem
is... In the always statement that generates the rd_info_pointer, the
pointer is incremented when release_buffer is high and fifo_empty is
low. I believe that this should be info_empty instead of fifo_empty. I
have changed this and rerun simulations as well as rebuilding the FPGA
and it seems to have fixed the problem.
Here's the code I changed (line 283 of can_fifo.v). What do you think?
// rd_info_pointer
always @ (posedge clk or posedge rst)
begin
if (rst)
rd_info_pointer http://www.opencores.org/forums.cgi/cores/attachments/20050309/f2b1f737/attachment.pgp
|
CAN Controller bug in can_fifo.v
by Unknown on Mar 10, 2005 |
Not available! | ||
Hi, Jeff.
Yes, you are right. Sorry for that. I already updated the cvs version.
Thanks for reporting.
Best regards,
Igor
On Wed, 09 Mar 2005 13:33:56 -0600, Jeff Hanoch jeff at lowrance.com> wrote:
I was using the CAN controller in an FPGA and was seeing some strange
behavior. We would halt the CPU debugger but the activity on the CAN
bus would continue. This filled up the FIFOs in the controller as
expected, but it would get into some strange state where we could not
read correct data.
Upon further logic simulation I narrowed down what I think the problem
is... In the always statement that generates the rd_info_pointer, the
pointer is incremented when release_buffer is high and fifo_empty is
low. I believe that this should be info_empty instead of fifo_empty. I
have changed this and rerun simulations as well as rebuilding the FPGA
and it seems to have fixed the problem.
Here's the code I changed (line 283 of can_fifo.v). What do you think?
// rd_info_pointer
always @ (posedge clk or posedge rst)
begin
if (rst)
rd_info_pointer http://www.opencores.org/mailman/listinfo/cores
|
![no use](https://cdn.opencores.org/img/pils_lt.png)
![no use](https://cdn.opencores.org/img/pil_lt.png)
![no use](https://cdn.opencores.org/img/pil_rt.png)
![no use](https://cdn.opencores.org/img/pils_rt.png)