Thông báo

Collapse
No announcement yet.

Memory Buffer for FPGA

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

  • Memory Buffer for FPGA

    Xin chào mọi người. Hiện tại mình đang làm 1 project sử dụng FPGA của Xilinx, mình đảm nhận khối sender buffer (Hình kèm theo ở dưới). Theo bài toán thì khối này giống 1 bộ nhớ đệm giúp truyền data giữa hai miền xung clock (200MHz/ 25MHz) tức là dữ liệu từ khối formatter được truyền qua và giữ lại ở đây, sau đó truyền qua SiTCP theo tín hiệu busy của khối này. Tuy nhiên vì là người không chuyên và ko được dạy về mảng này nhiều nên kiến thức mình đọc cứ chắp vá, mình ko biết là nên dùng kỹ thuật gì (Ram or pipeline or shift reg of buffer line...). Mình nghĩ bài toán là vấn đề thường gặp với mọi người. Bác nào chuyên về mảng này nhiều cho mình ý kiến đc k? có thể là ý tưởng, cũng có thể là tài liệu mà mình cần phải đọc để giải quyết vấn đề hay là kinh nghiệm giải bài toán nào liên quan thì giúp mình vs.
    Xin cám ơn nhiều!
    Click image for larger version

Name:	vme.png
Views:	1
Size:	116.3 KB
ID:	1422453
    https://mega.co.nz/#!N8hmDSLZ!kryJ5Q...nCfe1KnT9-DTOo

  • #2
    chào bạn, theo như hình vẽ, khối sender buffer đứng giữa 2 miền clock 200MHz và 25MHz.
    Bạn cần xác định xem nguồn sinh 2 clock này có liên quan gì với nhau không? tùy sự liên hệ giữa 2 nguồn clock đó, bạn sẽ phân loại chúng về các loại
    1. Synchronous
    2. Mesochronous
    3. Plesiochronous
    4. Asynchronous
    Từ đó bạn lựa chọn kĩ thuật đồng bộ phù hợp. Bạn search tìm hiểu thêm những khái niệm này. Mình đã có kinh nghiệm thực tế với loại 4 Asynchronous thôi. Theo kinh nghiệm của mình, bài tóan của bạn qui về asynchronous FIFO loại 4 hoặc synchronous loại 1. Loại 2,3 khó implement trên FPGA. Nói chung clock domain crossing là 1 vấn đề phức tạp.
    Nhất bộ khởi xuất vạn lý hành (Lão Tử)
    A journey of a thousand miles begins with one step.

    Comment


    • #3
      Mình thấy bạn đang làm việc với FPGA & tool của Xilinx, để tiết kiệm thời gian nhất và thiết kế an tòan nhất, bạn hãy sử dụng logic core về asynchronous FIFO (nếu bạn quy bài tóan của bạn về loại này).
      Mình ko nhiều kinh nghiệm với tool Xilinx, mình chỉ search 1 core gợi ý cho bạn
      http://www.xilinx.com/support/docume...async_fifo.pdf

      Thân
      Nhất bộ khởi xuất vạn lý hành (Lão Tử)
      A journey of a thousand miles begins with one step.

      Comment


      • #4
        Cám ơn bạn jcofee đã góp ý. Đúng như bạn nói thì đây là loại 4. Tuy nhiên ở đây minh đang thắc mắc là có dùng FIFO được không? Vì mình đã từng nghiên cứu file mà bạn gửi về logic core. Tuy nhiên chắc có lẽ mình cần hiểu sâu bài toán hơn nữa... có gì mình sẽ update ý tưởng lên, hy vọng bạn theo dõi và góp ý
        Last edited by trustinlife; 17-10-2014, 17:07.

        Comment


        • #5
          chào bạn,
          vấn đề gốc bạn phân vân là "(Ram or pipeline or shift reg of buffer line...)." dùng kĩ thuật nào?

          Lựa chọn phụ thuộc vào chức năng mà khối sender buffer phải làm.
          Bạn sẽ sử dụng FIFO nếu như:
          sender buffer không tác động gì lên dữ liệu ghi vào từ phía event-data formatter (ko thay đổi giá trị, ko sắp xếp lại nội dung, ko chèn thêm, ko xóa bớt). Phía event-data formatter ghi vào tuần tự (dấu hiệu là ko có địa chỉ ô nhớ cần ghi), Phía SiTCP đọc ra tuần tự (dấu hiệu là không có địa chỉ ô nhớ cần đọc).
          Nhìn từ góc nhìn của 1 lập trình viên, mình gọi loại cấu trúc dữ liệu có đặc tính như vậy là hàng đợi - queue hay FIFO, bất chấp bạn thực hiện sender buffer bằng kĩ thuật nào, bằng phần cứng hay phần mềm. Có lẽ chữ "buffer" trong sender buffer làm bạn bối rối 1 chút, nhưng nếu functional requirement cho khối sender buffer chính xác là như mô tả, bạn có thể mạnh dạn đổi tên thành sender FIFO!

          Để thực thi 1 cấu trúc dữ liệu FIFO bằng phần cứng, về mặt chức năng mình chia FIFO = RAM (physic-design RAM hoặc flip-flop based RAM) + mạch điều khiển đọc ghi (vị trí đọc ghi và điều tiết chống tràn dữ liệu).

          Thiết kế sẽ không phức tạp nếu như việc đọc và việc ghi được điều khiển bởi cùng 1 clock, vấn đề phức tạp nảy sinh là sender buffer đứng giữa 2 miền clock, nên mình đã gợi ý về logic core asynchronous FIFO.

          Hi vọng phân tích trên giúp ích cho bạn. Thân.
          Nhất bộ khởi xuất vạn lý hành (Lão Tử)
          A journey of a thousand miles begins with one step.

          Comment


          • #6
            Cám ơn jcoffee,
            Phân tích của bạn giúp mình sáng tỏ khá nhiều. Chính xác thì sender buffer không tác động gì đến dữ liệu. Ban đầu mình nghĩ sender buffer dùng để lưu lại từng gói dữ liệu từ khối trước nó theo clock 200 sau đó truyền qua SiTCP với clock 25, tưởng tượng như từng xe tải vào kho để lấy hàng, tức xe 1 vào lấy hàng đưa cho nhà phân phối, lúc đó xe 2 đang đợi, sau khi nhà phân phối báo "not busy" thì xe 2 sẽ đưa hàng qua, lần lược như vậy hàng trong kho sẽ đươc đưa vào các xe và chuyển từ từ qua nhà pp. Có lẽ mình sai, vì dữ liệu ở đây được lấy vào liên tục dựa trên quản lý của khối Trigger manager. Hiện tại mình đang cố gắng xem lại cấu trúc hai khối event formater và channel formater của những những người khác trong nhóm để nắm được định dạng dữ liệu sau khi truyền qua sender. Chắc sau đó sẽ đi sâu vào Asyschronous FIFO- đây có lẽ là kỹ thuật mình cần.
            P/s: Kiến thức mình còn khá mập mờ, nếu có lời khuyên gì khi làm về mảng FPGA, hy vọng bạn chia sẽ. Chúc bạn luôn vui.

            Comment

            Về tác giả

            Collapse

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

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

            Collapse

            • dinhthuong80
              Trả lời cho Tiếng Anh cho người Việt
              bởi dinhthuong80
              Bác nói rất khách quan và chính xác. Ngoại ngữ là chìa khóa thăng tiến dù làm gì. Chả thế mà nay nước mình dạy tiếng Anh từ tiểu học.

              Nhớ hồi năm 2006 em ra Hải Phòng, Hải Dương tìm việc, thời đó ở Bình Dương lương công...
              hôm nay, 14:51
            • dinhthuong80
              Trả lời cho Tiếng Anh cho người Việt
              bởi dinhthuong80
              Cảm ơn bạn, ĐT cũng có ý nghĩ như vậy.

              Thực ra, lỗi của hãng đó ( gọi là hãng vì không chỉ một model sản phẩm) là về phần cứng, ĐT tuy không biết về lập trình phần mềm nhưng cũng thấy rằng sẽ chẳng khó khăn gì đáng...
              hôm nay, 14:39
            • dinhthuong80
              Trả lời cho Tiếng Anh cho người Việt
              bởi dinhthuong80
              Dạ, bác bảy mấy tuổi đời rồi cũng không kém bố cháu bao nhiêu. Tuổi nghề thì bác cũng đáng tuổi cha chú.

              Nhưng 2 điều trên thì chưa hẳn đã đáng quí và đáng tôn trọng bằng việc bác rất nhiệt tình chia sẻ kinh nghiệm chuyên...
              hôm nay, 14:28
            • bqviet
              Trả lời cho Tiếng Anh cho người Việt
              bởi bqviet
              Đúng, nếu chú tâm thì chỉ cần mỗi tiếng Việt là đã khá đủ để làm đa số công việc thông thường, ở thời đại ngày nay khi tài liệu sách vở phương tiện thông tin liên lạc đã nhiều. Nhưng cũng chính ở thời nay giao lưu các nước nhiều...
              Hôm qua, 20:26
            • mèomướp
              Trả lời cho Tiếng Anh cho người Việt
              bởi mèomướp
              Dạ cháu nghĩ chú dinh... cứ mạnh dạn gửi thư đi ạ, chú có thể gửi bằng văn bản in chuyển phát nhanh sẽ có giá trị hơn. Vấn đề chưa hẳn là cần hãng làm gì đó, mà chỉ đơn giản là mình cảm thấy nhẹ lòng vì đã làm những việc bản...
              Hôm qua, 12:32
            • vi van pham
              Trả lời cho Tiếng Anh cho người Việt
              bởi vi van pham
              Những lần hắt hơi sổ mũi làm tôi mệt lã, phải dùng rượu uống để ngũ. Tôi cũng đang uống rượu 1 mình, viết vài dòng này cho em ( có lẽ dt chỉ bằng tuổi em tôi).

              Dinh thuong dang đi vào vết xe đổ của tôi. Càng chứng minh, có...
              20-02-2025, 21:31
            • bqviet
              Trả lời cho Hỏi về cách hàn linh kiện ( giúp tớ với )
              bởi bqviet
              Thiết nghĩ thi thoảng bác lên đây chia xẻ ít kinh nghiệm cũng vui rồi. Còn chuyện con người sinh lão bệnh tử là thường, sống cùng với quy luật đó thôi. Bqv nhớ trước đây bác từng kể về chuyện rang chì ô-xít bằng chảo để phục hồi bình điện, đấy cũng là thành quả đáng nể phục ở thời kỳ thiếu thốn đó.
              20-02-2025, 17:22
            • dinhthuong80
              Trả lời cho Tiếng Anh cho người Việt
              bởi dinhthuong80
              Tiếng Anh, Đình Thường phải nói là rất tệ, khiến việc giao tiếp đời thường thôi cũng khó chứ nói gì về kĩ thuật.

              Nhân tiện, nhờ các bạn, các bác xem giúp thư ĐT viết thế này liệu có thể gửi tới địa chỉ nhận hay chăng,...
              20-02-2025, 11:52
            • vi van pham
              Trả lời cho Hỏi về cách hàn linh kiện ( giúp tớ với )
              bởi vi van pham
              Uống rượu 1 mình, thấy trang này nhớ lại cách đây vài chục năm hàn thiếc với inox cực kỳ khó, phải dùng acid Hcl tác dụng lên kẻm Zn để có Zncl2 làm thuốc trợ hàn, lúc đó làm gì có acid Hcl và thuốc trợ hàn?

              Cái khó bó cái...
              19-02-2025, 23:05
            • nhathung1101
              Trả lời cho Tiếng Anh cho người Việt
              bởi nhathung1101
              Nếu chú tâm thì học tiếng Việt cũng đủ rồi, thừa sức làm việc rồi.

              Học tiếng Anh cũng chỉ phụ trợ để đọc thêm tài liệu, hướng dẫn.

              Nhưng có hiểu điều đó không mới là vấn đề. Khi mà học ngoại ngữ để đi đạp xích lô đón khách???...
              19-02-2025, 21:27
            Đang tải...
            X