Thông báo

Collapse
No announcement yet.

nhân tần số trong FPGA

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

  • nhân tần số trong FPGA

    chào cả nhà,có pro nào biết chia tần trong FPGA làm thế nào ko?mong các pro chỉ giúp!

  • #2
    Sao lại nhân tần số?chia tần số đồng nghĩa với nhân chu kỳ chứ.Nếu chia tần số thì đơn giản thôi. Ví dụ với board spartan 3 sử dụng thạch anh dao động ở tần số 50Mhz chẳng hạn và bạn muốn chia tần còn 25Mhz. Bạn sử dụng thêm 1 biến "a" nữa để kiểm tra. cho biến đó cứ mỗi lần có xung clk từ thạch anh vào thì tăng a lên 1 đơn vị.cho nó tăng lặp liên tục từ 0 tới 49.999.999 sau đó kiểm tra nếu a>=25.000.000 thì cho đầu ra là 1 còn là 0 nếu ngược lại. Mình ko viết code ra luôn và chỉ nói cách làm thôi vì nó đơn giản.Như vậy bạn có thể chia tần bất kì có thể xuống 1hz.

    Comment


    • #3
      Hi hai_mta,

      Mình không biết mục đích của bạn chia tần số làm gì nhưng theo mình thì bạn nên dùng PLL có trên FPGA để chia tần số nếu cần sóng có tần số chính xác (về tần số và cả độ lệch pha). Nếu bạn chỉ cần độ chính xác nằm trong một khoảng cho phép, bạn có thể dùng như cách của bạn hoanglonghv. Một ví dụ đơn giản: Bạn có xung 50MHz, bạn cần chính xác 12MHz => f12 = f50 / 25 * 6, nếu bạn cần tần số trong khoảng 12MHz bạn có thể dùng ~f12 = f50/4 = 12.5 MHz.

      Chúc bạn thành công
      .^_^.

      Comment


      • #4
        library IEEE;
        use IEEE.STD_LOGIC_1164.ALL;
        use IEEE.STD_LOGIC_ARITH.ALL;
        use IEEE.STD_LOGIC_UNSIGNED.ALL;

        ---- Uncomment the following library declaration if instantiating
        ---- any Xilinx primitives in this code.
        --library UNISIM;
        --use UNISIM.VComponents.all;

        entity chiatan is
        port ( clk: in std_logic;
        rst: in std_logic;
        clock: out std_logic);
        end chiatan;

        architecture Behavioral of chiatan is

        begin
        process (rst, clk)
        variable dem: integer range 0 to 7:=0;
        begin
        if rst = '1' then
        dem := 0;
        clock <= '0';
        elsif clk = '1' and clk'event then
        dem := dem + 1;
        if dem = 7 then
        dem := 0;
        end if;
        if dem >= 4 then
        clock <= '1';
        else clock <= '0';
        end if;
        end if;
        end process;
        end Behavioral;
        Quang Nhat
        ---------------------------------------
        Yahoo :quangnhat85ls
        Mail :
        Nhận thiết kế và ép nhựa cho đồ điện tử

        Comment


        • #5
          em có đầu bài thế này,mong các pro giup đỡ:Write a VHDL code for a circuit capable of dividing the frequency of an input clock
          signal by an integer n (figure P6.4). The code should be generic; that is, n should be
          defined using the GENERIC statement.

          Comment


          • #6
            Bạn danbeo85 cho mình hỏi bạn bảo dùng bộ PLL trên FPGA tức là sao nhỉ? Ý bạn là sử dụng một bộ code cho vòng khóa pha trên FPGA hay các con FPGA có PLL bên trong? Mình có một yêu cầu, ví dụ mình có tần số đầu vào 40MHz, mình cần tạo ra tần số 25Mhz, mình cũng nghĩ đến PLL nhưng tìm trên mạng code PLL cái thì khó hiểu quá, cái thì lại không tổng hợp được, chỉ chạy được mô phỏng thôi. Mong bạn giúp đỡ!

            Comment


            • #7
              vào IP core mà tìm thử xem. chắc là có đấy.

              Comment


              • #8
                Nguyên văn bởi hai_mta Xem bài viết
                em có đầu bài thế này,mong các pro giup đỡ:Write a VHDL code for a circuit capable of dividing the frequency of an input clock
                signal by an integer n (figure P6.4). The code should be generic; that is, n should be
                defined using the GENERIC statement.
                bạn muốn chia tần thì làm như anh quangnhat là được rồi đấy, yêu cầu sử dung generic để viếc chia tần được linh hoạt hơn ấy mà
                muốn vậy chỉ cần thêm code generic {n : integer :=x}; là được, để sau này muốn thay đổi ta chỉ cần thay đổi 1 lần trong generic thôi!
                cheers!!!

                Comment


                • #9
                  Hi thuanpv,

                  Trong FPGA đã có PLL rồi, bạn chỉ cần lấy ra dùng thôi. Sử dụng IP core đó (Dùng megafunction trong FPGA của Altera). Lưu ý là mỗi loại FPGA sẽ có các lõi PLL khác nhau (về tính năng, tần số hoạt động, ...). Bạn có thể tìm hiểu thêm về PLL IP core của từng công ty FPGA để có thêm thông tin cách sử dụng: Xilinx, Altera, ...

                  .^_^.

                  Comment

                  Về tác giả

                  Collapse

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

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

                  Collapse

                  Đang tải...
                  X