Thông báo

Collapse
No announcement yet.

Thiết kế Oscilloscope với Kit xtremedsp_devkitIV

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

  • Thiết kế Oscilloscope với Kit xtremedsp_devkitIV

    Mình đang làm Project "Thiết kế Oscilloscope với Kit xtremedsp_devkitIV" muốn cầu kiến các cao thủ vì bế tắc quá.
    Ở chế độ đồng bộ ngoài Oscilloscope thường nối 1 đống thiết bị nối tiếp về tín hiệu đồng bộ, vì dụ máy phát hàm, tín hiệu này chuẩn 10Mhz.
    Vấn đề đau đầu với mình là cái Kit đang ADC ở 100Mhz chẳng hạn phải chuyển sang chế độ đồng bộ như thế nào, mình có 2 ý tưởng:
    1.
    - Đưa xung đồng bộ 10Mhz vào DCM ( IP Core của Xilinx) nâng lên thành 100Mhz.
    - Ngắt ngồn xung Clk 100Mhz đang dùng để ADC chuyển sang dùng Clk 100Mhz mới.

    Vấn đề là DCM lại không hỗ trợ đầu vào 10Mhz, tối thiểu là 24Mhz mới đau đầu các bác ạ. Bác nào có cách nào để DCM hỗ trợ đầu vào 10Mhz cho ý kiến với?

    2.
    Lấy Clk đồng bộ 10Mhz vào để điều chỉnh pha của Clk 100Mhz đang ADC.
    Bác nào có cao kiến về so pha của hai Clk cho em xin ý kiến với.


    Mong tin các cao thủ từng ngày!

  • #2
    Nguyên văn bởi hungcachan Xem bài viết
    Mình đang làm Project "Thiết kế Oscilloscope với Kit xtremedsp_devkitIV" muốn cầu kiến các cao thủ vì bế tắc quá.
    Ở chế độ đồng bộ ngoài Oscilloscope thường nối 1 đống thiết bị nối tiếp về tín hiệu đồng bộ, vì dụ máy phát hàm, tín hiệu này chuẩn 10Mhz.
    Vấn đề đau đầu với mình là cái Kit đang ADC ở 100Mhz chẳng hạn phải chuyển sang chế độ đồng bộ như thế nào, mình có 2 ý tưởng:
    1.
    - Đưa xung đồng bộ 10Mhz vào DCM ( IP Core của Xilinx) nâng lên thành 100Mhz.
    - Ngắt ngồn xung Clk 100Mhz đang dùng để ADC chuyển sang dùng Clk 100Mhz mới.

    Vấn đề là DCM lại không hỗ trợ đầu vào 10Mhz, tối thiểu là 24Mhz mới đau đầu các bác ạ. Bác nào có cách nào để DCM hỗ trợ đầu vào 10Mhz cho ý kiến với?

    2.
    Lấy Clk đồng bộ 10Mhz vào để điều chỉnh pha của Clk 100Mhz đang ADC.
    Bác nào có cao kiến về so pha của hai Clk cho em xin ý kiến với.


    Mong tin các cao thủ từng ngày!
    Đó giờ mình dùng chỉ thấy "external trigger" chứ không hiểu "external synchronization" như bạn nói là gì. Có nhầm gì không?

    Comment


    • #3
      Mình hơi gà nên không rõ lắm, mong Mod giải thích, tất nhiên là Trigger ngoài là bình thường về tính năng của Oscilloscope, nhưng ví dụ muốn lấy mẫu mà Clk lấy mẫu phải cùng pha với các tín hiệu khác (đặc tính bài toán của mình vậy) vì có rất nhiều thiết bị khác được nối với nhau để cùng xử lý tín hiệu, cái máy của mình chỉ là một khâu.

      Tiện đây hỏi bác luôn, mình là con gà về Fpga và Xilinx, mới bắt đầu, mình muốn hỏi:
      - Bắt đầu với Kit này, mình tạo 1 project Virtex-4 và nạp thành công, mình làm như sau: Đầu vào 40Mhz >> BUFG >> INV >> BUFG >> Đầu ra (Đo thấy Clk 40Mhz ở đầu ra).
      - Mình thử với DCM_BASE, làm theo hướng dẫn ở "Virtex-4 FPGA User Guide" >> hoàn thành thiết kế rồi nối ra các chân vào ra để debug bằng Oscilloscope, chỉ đo thấy chân CLK0 của DCM cho ra xung,các chân CLK90, CLK180, CCK270 không tạo lệch pha với CLKIN và các chân còn lại không thấy phản ứng gì, ví dụ chân CLKDV, mặc dù mình đã kích đúp vào modul để thay giá trị CLKDV_DIVIDE = 2, 4, 6 ..max 32.
      - Có điều mình thắc mắc nữa là kiểu thiết kế Schematic là cứ gắp ra rồi biên dịch >> nạp là chạy thôi chứ không cần thêm code nữa đúng không? vì mình test thấy DCM có dấu hiệu chạy vì chọn chế độ CLKIN_DIVIDE_BY_2 thấy đầu ra CLK0 chia 2.
      Mình đọc hoài mà không hiểu nguyên nhân, bên mục "Tâm sự về FPGA" bạn nói về mục này rất hữu ích, nhưng mình đọc useguide và làm theo không chạy.
      Mong nhận được lời khuyên của Mod.
      [IMG][/IMG]
      Last edited by hungcachan; 30-03-2011, 16:56.

      Comment


      • #4
        Nguyên văn bởi hungcachan Xem bài viết
        Mình hơi gà nên không rõ lắm, mong Mod giải thích, tất nhiên là Trigger ngoài là bình thường về tính năng của Oscilloscope, nhưng ví dụ muốn lấy mẫu mà Clk lấy mẫu phải cùng pha với các tín hiệu khác (đặc tính bài toán của mình vậy) vì có rất nhiều thiết bị khác được nối với nhau để cùng xử lý tín hiệu, cái máy của mình chỉ là một khâu.
        Mình nghĩ ra 1 cách, bạn làm thử
        Dùng clock 100MHz của board tạo clock 10MHz (clk_10m),
        Cách 1: Đưa clk_10m xor với clock 10Mhz ở ngoài của ban, khi lệch pha, xor sẽ tạo ra 1 xung. Và bạn dùng xung này để điều chỉnh pha của DCM cho đến khi 1 xung trùng nhau (không rõ Virtex4 cho phép chỉnh pha trong lúc chay không)
        Cách 2 là dùng PLL loop mà bạn tìm thấy trong appnote của Xilinx.


        Tiện đây hỏi bác luôn, mình là con gà về Fpga và Xilinx, mới bắt đầu, mình muốn hỏi:
        - Bắt đầu với Kit này, mình tạo 1 project Virtex-4 và nạp thành công, mình làm như sau: Đầu vào 40Mhz >> BUFG >> INV >> BUFG >> Đầu ra (Đo thấy Clk 40Mhz ở đầu ra).
        - Mình thử với DCM_BASE, làm theo hướng dẫn ở "Virtex-4 FPGA User Guide" >> hoàn thành thiết kế rồi nối ra các chân vào ra để debug bằng Oscilloscope, chỉ đo thấy chân CLK0 của DCM cho ra xung,các chân CLK90, CLK180, CCK270 không tạo lệch pha với CLKIN và các chân còn lại không thấy phản ứng gì, ví dụ chân CLKDV, mặc dù mình đã kích đúp vào modul để thay giá trị CLKDV_DIVIDE = 2, 4, 6 ..max 32.
        - Có điều mình thắc mắc nữa là kiểu thiết kế Schematic là cứ gắp ra rồi biên dịch >> nạp là chạy thôi chứ không cần thêm code nữa đúng không? vì mình test thấy DCM có dấu hiệu chạy vì chọn chế độ CLKIN_DIVIDE_BY_2 thấy đầu ra CLK0 chia 2.
        Mình đọc hoài mà không hiểu nguyên nhân, bên mục "Tâm sự về FPGA" bạn nói về mục này rất hữu ích, nhưng mình đọc useguide và làm theo không chạy.
        Mong nhận được lời khuyên của Mod.
        Cái này thấy có vẻ đúng rồi mà không hiểu sao không chạy. Bạn nối chân "locked" và chân reset ra ngoài rồi test thử xem có "lock" được không và thử reset nó xem sao.

        Comment


        • #5
          Mình đã giải quyết xong vụ DCM, đúng là nó không chấp nhận CLKin ngoài giá trị cho phép, nó khóa đầu ra hoặc điên điên nó cho tất cả đầu vào bằng đầu ra. Nếu cho vào đúng, không cần Reset, nó chạy liền.
          Hai cách bạn cho mình rất hay, mình sẽ tìm hiểu cách thứ nhất, còn cách thứ hai dùng Pll thì hơi khó vì Virtex-4 không hỗ trợ Pll bên trong (Virtex-5 mới hỗ trợ) còn theo appnote mà cậu chỉ, cần thêm 1 con VCO ngoài, mà chỗ này nó không cho phép mình thêm phần cứng.
          Ngoài hai cách trên, bạn có cách nào dùng bộ đếm để dịch pha của hai tín hiệu: 100 và 10Mhz không?
          Thực ra là trên mạch có 1 con OSC llaapj trình được, mình cho nó ra 500Mhz, như vậy mình có hai Clk: Clk1: 500Mhz (ở sẵn bên trong) và Clk2: 10Mhz (từ bên ngoài). Có cách nào thực sự đơn giản, chỉ dùng bộ đếm, hay dang graphic để trùng pha hai tín hiệu này hay không?
          Ming tin và cảm ơn bạn rất nhiều.

          Comment


          • #6
            Nguyên văn bởi hungcachan Xem bài viết
            Mình đã giải quyết xong vụ DCM, đúng là nó không chấp nhận CLKin ngoài giá trị cho phép, nó khóa đầu ra hoặc điên điên nó cho tất cả đầu vào bằng đầu ra. Nếu cho vào đúng, không cần Reset, nó chạy liền.
            Hai cách bạn cho mình rất hay, mình sẽ tìm hiểu cách thứ nhất, còn cách thứ hai dùng Pll thì hơi khó vì Virtex-4 không hỗ trợ Pll bên trong (Virtex-5 mới hỗ trợ) còn theo appnote mà cậu chỉ, cần thêm 1 con VCO ngoài, mà chỗ này nó không cho phép mình thêm phần cứng.
            Để thay thế VCO, bạn có thể dùng NCO (Numerical Controlled Oscillator)

            Ngoài hai cách trên, bạn có cách nào dùng bộ đếm để dịch pha của hai tín hiệu: 100 và 10Mhz không?
            Thực ra là trên mạch có 1 con OSC llaapj trình được, mình cho nó ra 500Mhz, như vậy mình có hai Clk: Clk1: 500Mhz (ở sẵn bên trong) và Clk2: 10Mhz (từ bên ngoài). Có cách nào thực sự đơn giản, chỉ dùng bộ đếm, hay dang graphic để trùng pha hai tín hiệu này hay không?
            Ming tin và cảm ơn bạn rất nhiều.
            Có cách dùng bộ đếm NCO.
            Ví dụ muốn tạo clock f, Bạn lấy clock nhanh hơn (tối thiểu 2xf) để chạy mạch NCO.
            Mạch NCO sẽ cho ra clock f. Ví dụ f = 100MHz. Bạn dùng clk f chia 10 xuống còn 10MHz, clk 10Mhz này hiển nhiên cùng pha với clk 100MHz.
            Rồi dùng mạch phase detector so sánh phase của clk 10MHz bạn tạo ra với clk 10MHz ở ngoài. Sau đó bạn chỉnh phase của NCO để cho 2 phase này trùng nhau.

            Mạch NCO:

            phase <= phase + delta;
            phase_out <= phase + phase_offset;

            clk_out = phase_out(31) ... tùy theo delta, bạn sẽ có được tần số của clk_out.
            Tần so clock out :
            fout = fin * delta/2^32 ... (phase dùng 32 bit)

            phase_offset có thể dùng để chỉnh phase của clock out.

            Comment


            • #7
              - Mình không tìm thấy NCO trong các symbol cơ bản của Virtex-4 (mình dùng ISE 11.1). Nó là Ip-core thuộc DSP hả bạn? Có cần phải mua không? hay là phải cài phiên bản ISE mới nhất?
              - Mình hiểu ý tưởng của bạn như thế này có đúng không?
              + Mình có Clk nội 500Mhz >>> chia thành 100Mhz >>> dùng NCO chia thành 10Mhz_nco >>> so pha với 10Mhz đầu vào (10Mhz_in) với 10Mhz_nco >> phát hiện sự lệch pha và dùng NCO để điều chỉnh pha của 100Mhz trong vòng lặp.
              + Vậy để chia 500Mhz trong Virtex-4 dùng cách nào là tối ưu, như DCM với con Virtex-4 của mình (XC4VSX35-10FF668), DCM của nó chấp nhận đầu vào tối đa 300Mhz. Tiện về DCM hỏi bạn luôn, mình đã thử hai chế độ:là DLL và DFS của DCM,
              với DFS mình chỉ hiểu là không đấu chân Clkfb, nó chấp nhận đầu vào đến tận 1Mhz và mình đã nhân tần số lên được, nhưng mình chưa hiểu sự khác nhau cơ bản của chế độ DSF và DLL,DSF sẽ tạo ra lệch pha lớn đúng không?
              + Làm thế nào để xác định sự lệch pha giữa hai tín hiệu 10Mhz_in và 10Mhz_nco, như cách bạn nói ở trên dùng (Xor) đúng không?
              + NCO có cho điều chỉnh trong quá trình chạy hay không? dạng như vòng lặp chẳng hạn, vì cái chân 10Mhz_in của mình nó sẽ bị rút ra cắm vào liên tục.
              + Nó cho điều chỉnh với độ phân giải là (32Bit/2*pi) hả bạn, như vậy quá chính xác rồi!
              Mình tìm không thấy tài liệu nào nói riêng về NCO, nếu bạn có cho mình xin đường link, cảm ơn rất nhiều.

              Comment


              • #8
                Nguyên văn bởi hungcachan Xem bài viết
                - Mình không tìm thấy NCO trong các symbol cơ bản của Virtex-4 (mình dùng ISE 11.1). Nó là Ip-core thuộc DSP hả bạn? Có cần phải mua không? hay là phải cài phiên bản ISE mới nhất?
                NCO đơn giản thôi, bạn tư viết VHDL cũng được.
                process(clk)
                begin
                if(rising_edge(clk)) then
                phase <= phase + x"10000000";--frequency out = 1/8 frequency in
                end process;
                clk_out <= phase(31);
                Bạn thử test trước coi có tạo ra đúng tần số ko. Vấn đề của NCO là bị jitter

                - Mình hiểu ý tưởng của bạn như thế này có đúng không?
                + Mình có Clk nội 500Mhz >>> chia thành 100Mhz >>> dùng NCO chia thành 10Mhz_nco >>> so pha với 10Mhz đầu vào (10Mhz_in) với 10Mhz_nco >> phát hiện sự lệch pha và dùng NCO để điều chỉnh pha của 100Mhz trong vòng lặp.
                + Vậy để chia 500Mhz trong Virtex-4 dùng cách nào là tối ưu, như DCM với con Virtex-4 của mình (XC4VSX35-10FF668), DCM của nó chấp nhận đầu vào tối đa 300Mhz.
                Thôi lấy clk 100MHz rồi nhân lên vậy . 500Mhz mạch ko chạy nổi đâu. Nhân lên chừng 250Mhz là được.
                Nếu DCM của Virtex4 cho phép chỉnh phase trong lúc chạy thì chắc ko cần phức tạp như vậy.

                Tiện về DCM hỏi bạn luôn, mình đã thử hai chế độ:là DLL và DFS của DCM,
                với DFS mình chỉ hiểu là không đấu chân Clkfb, nó chấp nhận đầu vào đến tận 1Mhz và mình đã nhân tần số lên được, nhưng mình chưa hiểu sự khác nhau cơ bản của chế độ DSF và DLL,DSF sẽ tạo ra lệch pha lớn đúng không?
                http://www.xilinx.com/itp/xilinx7/bo...dl0021_13.html
                Theo trang web đó thì 2 cái gần như độc lập.
                Khi dùng DFS, bạn vẫn có thể feedback clk0 ... clkFX sẽ cùng pha với clk-in.

                + Làm thế nào để xác định sự lệch pha giữa hai tín hiệu 10Mhz_in và 10Mhz_nco, như cách bạn nói ở trên dùng (Xor) đúng không?
                Uh, mình biết cách đó, bạn có thể kiếm thêm trên mạng, chắc có nhiều mạch khác.

                Comment


                • #9
                  bạn có cách nào nhận biết 1 tín hiệu 10Mhz cắm vào mạch không nhỉ, ví dụ cắm vào là 1, rút ra là 0. tất nhiên là ở bên trong có dao động nội rồi. Mình nghĩ đủ cách nhưng không có cách nào ổn, các loại mạch đếm, rese... bó tay.

                  Comment


                  • #10
                    Nguyên văn bởi hungcachan Xem bài viết
                    bạn có cách nào nhận biết 1 tín hiệu 10Mhz cắm vào mạch không nhỉ, ví dụ cắm vào là 1, rút ra là 0. tất nhiên là ở bên trong có dao động nội rồi. Mình nghĩ đủ cách nhưng không có cách nào ổn, các loại mạch đếm, rese... bó tay.
                    Bạn cần thêm 1 clock khác để chạy mạch watchdog. Khi clk10Mhz co' xung thì mạch watchdog bi reset liên tục còn ko mạch watchdog sẽ báo.

                    Comment


                    • #11
                      bạn hướng dẫn cụ thể hơn được không. mình lần đầu làm, không biết Watchdog trong xilinx thế nào, lấy ở đâu, có giống vi điều khiển không? Mà mình dùng virtex-4 và virtex-2 có watchdog không?
                      Last edited by hungcachan; 01-04-2011, 17:44.

                      Comment


                      • #12
                        Watchdog (canh chừng) là một bộ đếm lùi. Khi bộ đếm xuống 0 thì sẽ báo 1 tín hiệu. Để bộ đếm không xuống 0 thì phải có 1 tín hiệu khác reset bộ đếm lại giá trị ban đầu. Nếu không reset kip thì bộ đếm sẽ = 0.

                        Bạn có thể dùng clock 10MHz để reset bộ đếm. Nếu bộ đếm chạy bằng clock 100Mhz thì cho bộ đếm đếm từ 15 là được, nếu clock 10Mhz chạy thì bộ đếm sẽ luôn bị reset trước khi = 0.

                        Comment

                        Về tác giả

                        Collapse

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

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

                        Collapse

                        • mansion123
                          Bật mí những điều ít ai biết về thi công gỗ óc chó
                          bởi mansion123
                          Thi công gỗ óc chó giúp không gian trở nên sang trọng, ấm cúng, gần gũi hơn. Sự kết hợp giữa thẩm mỹ và chất lượng cao của gỗ óc chó chắc chắn sẽ mang lại giá trị lâu dài và làm hài lòng ngay cả những khách hàng khó tính nhất. Vậy đằng
                          ...
                          hôm nay, 16:08
                        • tuyennhan
                          Trả lời cho Tiếng Anh cho người Việt
                          bởi tuyennhan
                          Cái thư sai ngay câu chào Dear sir mới đúng Hi chỉ dùng cho người quen , các vấn đề về kỹ thuật nó không trả lời hoặc nói loanh quanh tránh ảnh hưởng đến công ty .
                          Giup1 người cần không giúp người không cần với lại văn mình vợ người nha đừng quên .
                          hôm nay, 07:44
                        • vi van pham
                          Trả lời cho Tiếng Anh cho người Việt
                          bởi vi van pham
                          Cám ơn những lời chúc tốt đẹp của em.

                          Việc em làm giống như chê sếp dốt, chẳng những không có miếng xôi nào để ăn mà còn chịu nhiều trù dập lên bờ , xuống ruộng.

                          Hãy tránh vết xe đổ của tui đi. Dành thời gian lo cho gia đình....
                          hôm nay, 02:00
                        • nhathung1101
                          Trả lời cho Tiếng Anh cho người Việt
                          bởi nhathung1101
                          Ngoại ngữ là không thể thiếu, nhất là làm việc với công nghệ.

                          Nhưng học để tán gái hay để đọc datasheet, manual là chuyện cần quan tâm.

                          Và đọc ở nguồn nào đáng tin cậy, chứ cứ lên tictok hay facebook học lỏm thì...
                          Hôm qua, 22:18
                        • 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 qua, 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 qua, 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 qua, 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...
                          21-02-2025, 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...
                          21-02-2025, 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
                        Đang tải...
                        X