LOGIN   :::   RECOVER PASS   :::   GET ACCOUNT    
Browse
  • Projects
  • Code (CVS)
  • Forums
  • News
  • Articles
  • Polls
  •  
    OpenCores
  • FAQ
  • CVS HowTo
  • Mission
  • Media
  • Tools
  • Advertise
  • Mirrors
  • Logos
  • Contact us
  • Job Opportunity
  •  
    Tools
  • Search
      
  • Download Cores (CVSGet)
  •  
    More
  • Wishbone
  • Perlilog
  • EDA tools
  • OpenTech CD
  •  
    Navigation: All forums > Cores > Message List > Message Post

    Message

    Reply | Reply all
    Date Prev | Date Next | Thread Prev | Thread Next Date Index | Thread Index

    From: Flexie at gmx.de<Flexie@g...>
    Date: Wed Feb 7 17:23:57 CET 2007
    Subject: [oc] CAN Controller
    Top
    Hi again, I think I was able to understand the problem myself.
    Anyway, I had to make some changes to make it work under my
    conditions, and to give any sense to this thread I will tell you what
    kind of changes I made.
    It is the release_buffer signal that caused my trouble because (,at
    first I misunderstood its meaning and thought it had to be active for
    each byte I want to read out,) I didn't see how to force it to be 1
    for only one clk cycle, since I cannot give exact timing to my
    incomming signals so far.

    I altered the name of the input signal to

    input release_buffer_request

    I added a register

    reg release_buffer_request_q

    and another wire which is due to deliver the actual release_buffer

    wire release_buffer

    all other occurences of release_buffer stay just as they are and the
    only thing missing now is:

    assign release_buffer = release_buffer_request &
    (~release_buffer_request_q);

    always @ (posedge clk or posedge rst)
    begin
    if(rst)
    release_buffer_request_q <= 1'b0;
    else
    release_buffer_request_q <= #Tp release_buffer_request
    end

    I think thats it, and best is: its working! Thanks for reading.




    ----- Original Message -----
    From: Flexie at gmx.de<Flexie@g...>
    To:
    Date: Mon Feb 5 16:41:49 CET 2007
    Subject: [oc] CAN Controller

    > Hi,
    > I'm using the verilog version of can_top and I fail to read out any
    > receive data out of can_fifo except for the first message. I am
    > using
    > extended mode, and i did not forget to set the release buffer bit.
    > I wonder how the length_info register shall be used.
    > There is a signal called initialize_memories, its value starts with
    > 1
    > and wont change until there is a write_info_pointer overrun (since
    > :
    > if(&write_info_pointer) init_mem <= 0;)
    > because of this my length info used to be 0 in each register all
    > the
    > time, which might be the desired result of that memory
    > initialisation.
    > How do you do that usually when you restart your can controller, do
    > you send some dummy messages at the start?
    > I dared to change the after reset value of init_memories from 1 to
    > 0
    > and I used Model Sim to check the result. In my test, the first
    > message I write into the fifo has a length of 5 byte (no real
    > message
    > with id, just simulating the fifo module) and the second one has a
    > length of 4 byte. The contents of the fifo is expectedly those
    > written
    > 9 bytes and the contents of the length_fifo register is 1st byte:
    > 5,
    > 2nd byte: 4. So far so good, but I dont see how reading out the
    > messages will work in that case, since the read_info_pointer is
    > incremented after each clk where there is a release_buffer signal,
    > so
    > after I read out the first byte of fifo (lets say address 16 which
    > would be address 0 of fifo) the next read_address will already be
    > address + 4 (fifo adddress 20+x) and I havent even read the second
    > byte of the first message (fifo address 17).
    > Where am I mistaken and how can I manage to read out the messages
    > one
    > by one?
    > Hope anyone can understand my problem.
    > Thanks for any helpful answer!
    > Flex
    >
    >

     
    Copyright (c) 1999 OPENCORES.ORG. All rights reserved.