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

            • vi van pham
              Trả lời cho Tự tìm công thức tính lưu lượng gió quạt điện dân dụng
              bởi vi van pham
              Dinhthuong ơi! cơ hội làm giàu của cháu đến rồi.

              Trên thế giới toàn bộ : "Chân Vịt" cho tàu bè đều là cánh to, nó hao nhiên liệu, ma sát làm hư hao. Nay cháu sx chân vịt cánh nhò cho thế giới sử dụng, chân vịt của cháu...
              Hôm qua, 21:25
            • bqviet
              Trả lời cho nguồn switching
              bởi bqviet
              Thông tin cá nhân bqv xin phép tránh nêu ở diễn đàn. Nghề nghiệp thì bao năm nay vẫn thế thôi : điện - điện tử - tự động hóa - IT. Làm ơn đừng hâm mộ, nhỡ có dịp gặp thật thì lại thất vọng vì thực tế không như mình nghĩ. Bqv xét...
              Hôm qua, 21:16
            • mèomướp
              Trả lời cho Tự tìm công thức tính lưu lượng gió quạt điện dân dụng
              bởi mèomướp
              Dạ chú dinh... cứ xét hệ tại 1 thời điểm thì sẽ dễ hiểu hơn ạ, với cánh to thì mặt tiếp xúc lớn hơn, lực tác động vào đồng thời nhiều không khí hơn, nhìu không khí cùng chuyển động thì sẽ tạo lưu lượng gió lớn hơn ạ...
              Hôm qua, 18:49
            • mèomướp
              Trả lời cho nguồn switching
              bởi mèomướp
              Dạ cháu hỏi lại chị hàng xóm nhà cháu rồi ạ, chị ấy bảo anh thợ sửa điều hòa tâm sự với chị ấy nên hông nhầm đâu ạ. Chú bq... hông tin thì có thể xem video này ạ
              https://youtu.be/dvU8ZcvgYH4?si=15Sd_j3uxuWah9PR
              Hôm qua, 17:30
            • dinhthuong80
              Trả lời cho Tự tìm công thức tính lưu lượng gió quạt điện dân dụng
              bởi dinhthuong80
              Cảm ơn bác ạ, nhờ chủ đề này, nhờ bác nhiệt tình chia sẻ mà mọi người biết thêm nhiều kiến thức về quạt điên, thiết bị điện tưởng chừng rất đơn giản chỉ chuyển điện thành cơ.

              Tuy nhiên, chỗ in đậm cháu không đồng...
              Hôm qua, 17:00
            • bqviet
              Trả lời cho nguồn switching
              bởi bqviet
              Hình như bạn mèomướp lộn chút. Mạch nguồn xung vốn chạy 220V, muốn chuyển sang chạy 110V thì có thể dùng mạch nhân áp; hoặc thậm chí chẳng phải làm gì nếu đó là nguồn xung flyback đầu vào dải rộng. Chứ mạch nguồn vốn chạy 110V hoặc 100V nay muốn chuyển sang chạy 220 thì phải thay một mớ đấy....
              Hôm qua, 16:16
            • milan
              Trả lời cho nguồn switching
              bởi milan
              Đại ca bqviet năm nay bao nhiêu tuổi rồi, làm nghề gì nhỉ.
              Ngày xưa em hâm mộ anh nhất diễn đàn mà chưa có dịp gặp....
              Hôm qua, 11:51
            • mèomướp
              Trả lời cho nguồn switching
              bởi mèomướp
              Dạ ai lại làm như chú bq... ạ. một số dòng điều hòa của nhật bên trong nó có mạch nhân áp thì bỏ qua mạch ấy là chạy 220v được ạ. Còn máy hàn thì cháu hông biết nó có thể làm vậy ko, chú tháo ra xem mạch mới biết được ạ...
              Hôm qua, 07:09
            • tuyennhan
              Trả lời cho Tự tìm công thức tính lưu lượng gió quạt điện dân dụng
              bởi tuyennhan
              Senko này là sử dụng cánh nhỏ đầu tiên , hình dáng đẹp giá vừa phải nhưng lại thiết kế sai ở chổ thêm nối tiếp cầu chì nhiệt vào đàu dây chung mô tơ , sử dụng lâu quạt tăng nhiệt cầu chì đứt thế là hết xài dù những linh kiện...
              Hôm qua, 07:07
            • vi van pham
              Trả lời cho Tự tìm công thức tính lưu lượng gió quạt điện dân dụng
              bởi vi van pham
              Tất ca kiến thức về quạt của tôi do thầy hiệu trưởng Nguyễn Hồng Lam tốt nghiệpp kỹ sư bên Mỹ giảng dạy. Cánh quạt cong cũng là thầy dạy , nó tạo khí động học.

              Tôi đã dùng ngôn ngữ bình dân để thuyết minh cho mọi người...
              Hôm qua, 01:36
            Đang tải...
            X