Thông báo

Collapse
No announcement yet.

Bó tay với IP Core FIFO của Xilinx

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Bó tay với IP Core FIFO của Xilinx

    Mình xây dựng FIFO trên Ipcore FIFO của xilinx, mình đã đọc kỹ Use guide, mình Test thấy đầu ra Data Coun của FIFO (chỉ ra số từ tồn tại trong FIFO) rất mất ổn định.
    Nó thường xuyên không update, cứ 3 lần đọc hay ghi nó mới update 1 lần, và giá trị không đúng với giá trị những từ còn tồn tại trong fifo. lần đầu nó nhảy linh tinh.
    Bác nào đã làm cái này xin chỉ giáo, dùng 1 ngày mà không mò ra, thực sự rất mong ý kiến các cao thủ.

  • #2
    - Vì fifo phải đồng bộ giữa 2 miền clock, nên nó không update datacount liền được và phải mất vài clock.
    - "giá trị không đúng với giá trị những từ còn tồn tại trong fifo" ko hiểu bạn rõ lắm. Bạn post timing datagram lên đi.
    Tạo 2 miền clock khác nhau nhiều nhiều cho dễ phân biệt.
    Thực tế mình ít dùng giá trị này nên ko rõ nó có đúng không, đọc datasheet thì thấy khá mù mờ: Ờ miền ghi (write domain): "The count is guaranteed to never underreport
    the number of words in the FIFO, to ensure the user never overflows the FIFO" ... Nếu suy diễn câu này thì nó có nghĩa là nếu như trong FIFO (ví dụ có thể chứa 100 từ) nếu như có 10 từ được ghi vào rồi, thì giá trị của count sẽ >=10 :d. Nếu như nó thông báo 9 thì bạn sẽ ghi thêm 91 từ thì sẽ overflow, cho nên nó báo cáo khống lên chút.

    Nhưng bạn tính làm gì với count này?

    Comment


    • #3
      Rất cảm ơn Mod đã trả lời,
      Như mình đã nói trên 1 số bài viết khác, mình đang là Oscilloscope với Kit DSP của Nallatech, ADC đầu vào của mình là 100MHz và tất nhiên không thể truyền tất cả lên PC qua cổng PCI, mình phải Buffer qua FIFO, chắc mình sẽ xử lý dữ liệu này trước khi truyền lên PC. Hiện tại mình mới test FIFO mà cả đầu vào và đầu ra chung 1 clock (common clock) để xem bản chất FIFO thế nào, mình chưa mô phỏng mà đang Debug bằng thực nghiệm bằng cách truyền kết quả lên PC, mình là như sau:
      Tạo FIFO 256 từ, mỗi từ 32 Bit, sau đó mình dùng 1 bộ đếm 32 bit, khi vào FIFO, ghi liên tục hoặc dừng.

      - Mình phát hiện ra, khi FIFO đã đầy mà tiếp tục ghi thì nó không phá vỡ cấu trúc FIFO đã ghi.
      - Sau đó mình dừng ghi và vẫn cấp clock đồng thời lấy từng từ của FIFO ra và liên tục kiểm tra đầu ra Data Counter, mình phát hiện thấy cứ lấy ra 3 từ thì đầu ra Data Counter mới Update. Thực nghiệm là vậy mà Datasheet lại ko nói cụ thể vì mình đã đọc Use guide của Ip core FIFO 5.1 rất kỹ.

      Mình rất muốn giám sát đầu Data counter vì khi đó mình so sánh với xung Triger để biết dữ liệu đồng bộ với xung Triger rồi đóng gói chuyển lên PC.

      Nếu thực sự chân Data Counter chỉ update sau 3 lần lấy ra, xin hỏi các cao thủ có cách nào giải quyết bài toàn trên không?

      1 lần nữa cảm ơn Mod,

      Comment


      • #4
        Hehe, cũng ko hiểu sao datacount cho single clock fifo lại như vậy (hơi dỏm). Nếu bạn dùng chỉ 1 clock thì có thể viết riêng 1 datacount cho fifo của bạn.

        count: write, read, clock
        write ==> count up
        read ==> count down
        read and write, stay still

        Comment


        • #5
          chắc mình phải dùng cách này thôi, mình cũng không hiểu sao một IPCore ra đời lại thiếu chuẩn xác đến vậy, sẽ rất khó giám sát, có lẽ mình vừa làm vừa viết email hỏi Service của Xilinx. Cảm ơn về ý tưởng của bạn.
          Last edited by hungcachan; 27-06-2011, 18:50.

          Comment

          Về tác giả

          Collapse

          hungcachan Tìm hiểu thêm về hungcachan

          Bài viết mới nhất

          Collapse

          Đang tải...
          X