Trung tâm đào tạo thiết kế vi mạch Semicon


  • ĐĂNG KÝ TÀI KHOẢN ĐỂ TRUY CẬP NHIỀU TÀI LIỆU HƠN!
  • Create an account
    *
    *
    *
    *
    *
    Fields marked with an asterisk (*) are required.
wafer.jpg

Chia tần số trên FPGA

E-mail Print PDF

[​IMG]Dao động và tần số 
- Một thành phần rất quan trọng của bất kỳ board mạch FPGA là bộ dao động crystal. Các dao động phát ra một dãy 0,1 tại một thời gian nhất định dựa trên tần số của nó.

Oscillators được sử dụng nhiều trong các thiết bị điện tử như TV, radio, điện thoại di động, máy vi tính ... Ví dụ khi bạn mua một máy tính hoặc một bộ xử lý và bạn thấy trên đó có ghi tần số là 2 GHz ,nó có nghĩa là các dao động có tần số 2GHz. Hay nói cách khác các dao động phát ra 2 tỉ chuỗi của các tín hiệu 0,1. Theo vật lý thì ta có thể tìm thời gian từ tần số và công thức để chuyển đổi từ tần số trong thời gian là:
f=1/T
T: chu kì đơn vị là s(giây)
F: tần số đơn vị là Hz
- Vậy từ công thức ta có thể suy ra được 1Hz là 1s.
- Một tín hiệu 1Hz được biểu diễn như sau:
[​IMG]
Chia tần số:Một công đoạn rất quan trọng trong bất cứ mạch nào liên quan đến sự đồng bộ và thời gian thực. Hoặc trong một mạch chúng ta cần nhiều tần số thì việc chia tần số chính của board FPGA ( thường là 50Mhz) ra nhiều tần số khác nhau là không thể thiếu. 
Chuyển đổi thời gian:
1 mili giây = 0,001 giây
1 micro giây = 0,000 001 giây
1 nano giây = 0,000 000 001 giây
Chuyển đổi tần số-thời gian:
1 Hz <=> 1 giây
10 Hz <=> 0,1 giây
100 Hz <=> 0.01 giây
1 KHz (1 000 Hz) <=> 1 mili giây
1 MHz (1 000 000 Hz) <=> 1 micro giây
1 GHz (1 000 000 000 Hz) <=> 1 nano giây
Ví dụ:
- Ta có tần số ban đầu là 100Mhz. Chúng ta cần chia tần số này theo yêu cầu sau: hiển thị led nhấp nháy sang 0.5 giây và tắt là 0.5 giây.
- Đầu tiên chúng ta cần phải tính toán tần số cần thiết bằng cách sử dụng công thức:
f = 1 / 0,500 = 2 Hz
0,5 giây thì có tần số bằng 2 Hz.
- Trong FPGA, chúng ta sẽ sử dụng bộ đếm để điều khiển giây như mình mong muốn. Vì thế chúng ta cần một hằng số để đếm. Sau đây là công thức để tính hằng số đó:
c=gclk/clk
Với gclk: là tần số của board FPGA.
Clk: tần số ta đã tính ở trên.
Vậy ta có hằng số:
c=100 000 000/2=50 000 000

- Chúng ta sẽ đếm sự thay đổi của tần số gclk ( 1 hoặc 0 ) và đếm sự thay đổi đó đến hằng số cần thiết thì ta được thời gian hoặc tần số mình mong muốn.

Một số code mẫu
-Chia tần số bằng ngôn ngữ VHDL:
[​IMG]
[​IMG]

-Chia tần số bằng ngôn ngữ verilog:
MÃ:
always @(posedge clk,                     posedge reset)                         begin                             if(reset)                             Q1 <= 8'b0;                             else                             begin                                     if (r1)                                         Q1    <=    32'b0;                                     else                                         Q1    <=    Q1 + 32'b1;                             end                         end                assign     r1     =   (Q1 == 32'd50000000) ? 1'b1 : 1'b0;
minion_big

 

Bạn có đam mê ngành thiết kế vi mạch và bạn muốn có mức lương 1000 usd cùng lúc bạn

đang muốn tìm một Trung tâm để học vậy hãy đến với ngành vi mạch tại SEMICON

     HotLine: 0972 800 931 Ms Duyên

 

 

MÃ:
always @(posedge clk,                     posedge reset)                         begin                             if(reset)                             Q1 <= 8'b0;                             else                             begin                                     if (r1)                                         Q1    <=    32'b0;                                     else                                         Q1    <=    Q1 + 32'b1;                             end                         end                assign     r1     =   (Q1 == 32'd50000000) ? 1'b1 : 1'b0;
minion_big
 

Related Articles

Chat Zalo