Làm thế nào để đo độ lệch pha của hai tín hiệu có cùng tần số trong một đồ họa?


8

Làm thế nào để đo độ lệch pha của hai tín hiệu có cùng tần số trong một đồ họa?

Chẳng hạn, giả sử tôi có hai tín hiệu 150 MHz (bên trong với FPGA) đồng bộ với nhau, nhưng chúng được bù bởi một số độ lệch pha không đổi, làm thế nào tôi có thể đo được điều này?

Tôi đã nghiên cứu các phương pháp hiện tại của bộ chuyển đổi thời gian sang kỹ thuật số trên một đồ họa, nhưng những phương pháp này chủ yếu liên quan đến hai tín hiệu khởi động và dừng một lần và đo thời gian giữa hai sự kiện đó. Tôi tự hỏi liệu có phương pháp nào tốt hơn nếu chúng ta biết rằng các tín hiệu đang lặp lại với độ lệch pha không đổi?


Bạn có bị giới hạn trong những thiết bị hoặc gia đình mà bạn có thể sử dụng không?
Jason Morgan

1
Để chính xác những gì bạn muốn đo góc pha?
Jason Morgan

Câu trả lời:


5

Sử dụng một trong các khối đồng hồ PLL của FPGA để tạo ra tần số hơi khác nhau, có thể là 140 MHz hoặc bất cứ điều gì bạn có thể làm. XOR điều này với mỗi tín hiệu quan tâm (trả một số lưu ý lý thuyết cho các vấn đề có thể di chuyển có thể xảy ra, nhưng tự thỏa mãn nó sẽ hoạt động đủ thời gian). So sánh các pha của hai kết quả tần số thấp hơn.

Trên thực tế, điều này giống như cách máy thu radio hetrodyne hoạt động - bạn trộn tín hiệu đến với bộ tạo dao động cục bộ và tạo ra kết quả tần số thấp hơn thuận tiện hơn cho xử lý chi tiết.

Vì về cơ bản bạn có hệ thống kỹ thuật số một bit, kết quả của bạn sẽ ở các bước riêng biệt được xác định bởi độ lệch tần số - tần số LO của bạn càng gần với tần số đầu vào, kết quả càng tốt, nhưng bạn sẽ càng ít trả lời. Độ ổn định pha và chu kỳ nhiệm vụ của khối PLL ở các tỷ lệ khác nhau sẽ đáng để nghiên cứu. Tính trung bình nhiều phép đo có lẽ sẽ giúp bạn có câu trả lời tốt hơn.


Bạn sẽ cần một số loại bộ lọc thông thấp trong đó để tách tần số nhịp thấp hơn từ bộ lọc phía trên.
Dave Tweed

@DaveTweed Thực tế bạn sẽ không - tần suất cao hơn về mặt lý thuyết nếu bạn diễn giải luồng dữ liệu 140 hoặc 150 Msps mỗi giây bằng cách làm việc ngược thông qua quy tắc Nyquist, nhưng đại diện theo nghĩa đen sẽ là tần số âm, trong trường hợp này là không thể phân biệt. Có thể dễ dàng hơn khi nghĩ về nó theo logic kỹ thuật số, nơi bạn sẽ nhận được đầu ra là 1 giây trong một thời gian, cho đến khi nó cuộn qua 0 và sau đó quay lại 1 giây.
Chris Stratton

1
Tôi đề nghị bạn chạy ý tưởng của mình thông qua bất kỳ trình mô phỏng logic tiêu chuẩn nào. Những gì bạn sẽ thấy ở đầu ra của cổng XOR là dạng sóng về cơ bản có tần số là 290 MHz, nhưng có chu kỳ nhiệm vụ thay đổi từ 0% đến 100% và trở lại với khoảng thời gian 10 MHz. Nếu bạn đang lấy lại tín hiệu này (với đồng hồ nào?), Thì bạn cần phải nói điều đó.
Dave Tweed

Tôi có lẽ nên nói rõ ràng mẫu lại; một cách hiệu quả, nó được ngầm định trong việc sử dụng logic đồng bộ (với một trong hai đồng hồ) để đánh giá kết quả.
Chris Stratton

Tôi có thể hiểu những gì Dave nói. Làm thế nào để tôi "lấy mẫu lại" tín hiệu XOR (nghĩa là lấy mẫu lại với đồng hồ nào?)?
cksa361

4

Bạn đang tìm kiếm một máy dò pha. Hầu như tất cả các FPGA đều có mô-đun PLL được thiết kế chủ yếu để tạo tín hiệu đồng hồ. Một số trong số đó có thể được điều khiển với một tín hiệu nội bộ. Tôi không chắc liệu bạn có thể rút tín hiệu dò pha ra khỏi PLL không, nhưng tôi rất nghi ngờ điều đó.

Bạn có thể triển khai trình phát hiện pha trong một GPU cao cấp (xem ghi chú ứng dụng Vertex này ), nhưng có vẻ như rất nhiều công việc, đặc biệt là đối với một hoạt động tương tự dễ dàng, tồn tại các IC ngoài luồng, như các Analog Devices AD8302 . Nhưng bạn biết nền tảng của bạn tốt hơn tôi - có thể bạn không có quyền truy cập vào các thay đổi phần cứng.


4

Xilinx FPGA có một tính năng trong khối "Trình quản lý đồng hồ kỹ thuật số" cho phép tạo ra độ lệch đầu ra có thể lập trình. Độ lệch đầu ra đó có thể được thay đổi trong thời gian chạy với mức tăng nhỏ (10 giây của pS nếu tôi nhớ chính xác).

Bạn có 2 đồng hồ, chúng tôi sẽ gọi chúng là A và B. Đồng hồ A là đồng hồ chính của bạn mà gần như tất cả logic của bạn đã hết. Đồng hồ B được chạy qua DCM w / skew và sau đó đến T-Flip-Flop, tạo ra tín hiệu bật trên mỗi cạnh của B. Đầu ra bật tắt đó sau đó được chạy đến D-Flip-Flop có đồng hồ A.

Những gì bạn làm bây giờ là quét xiên trên B và xem kết quả khi được lấy mẫu bằng A. Khi bạn quét cài đặt nghiêng đồng hồ, đầu ra của D-Flip-Flop sẽ bắt đầu ở một giá trị và sau đó chuyển sang giá trị khác .

Theo một số cách, phương pháp này tương tự như những gì @JasonMorgan đã đề xuất-- nhưng không yêu cầu nhiều độ trễ logic tinh chỉnh để đảm bảo rằng các bộ đệm 360 đó có độ trễ nhất quán từ biên dịch sang biên dịch (nó sẽ không).

Tôi đã làm một cái gì đó rất giống với cái này trong Xilinx Spartan-3 và nó hoạt động rất tốt.


Tại sao bạn cần T-flip-flop?
cksa361

2
@ cksa361 Thông thường, các tài nguyên định tuyến đồng hồ và tài nguyên định tuyến tín hiệu và (hầu như) sẽ không bao giờ bị lẫn lộn. Nó chỉ tránh được rất nhiều vấn đề. T-Flip-Flop về cơ bản là một cách để di chuyển "thông tin" đồng hồ từ mạng đồng hồ sang mạng tín hiệu mà không phải làm điều gì kỳ lạ (như trộn tài nguyên định tuyến đồng hồ và tín hiệu)

1

Tôi không chắc điều này có hiệu quả không, nó chỉ là một ý tưởng. Nhưng nó tránh được sự cần thiết của đồng hồ lấy mẫu tốc độ cao để điều chỉnh khoảng cách thời gian giữa các tín hiệu của bạn.

Bạn có thể sử dụng độ trễ xác định (khá) trong thiết bị và số lượng cổng lớn, đặc biệt nếu bạn đang chạy trong môi trường nhiệt độ bị hạn chế hoặc kiểm soát. Bạn sẽ cần một bộ lọc vòng lặp bên ngoài, mạch CR và có lẽ bộ đệm schmidt sẽ thực hiện công việc. Bạn sẽ cần phải nói với fitter của bạn để không tối ưu hóa các cổng.

Hãy tham khảo của bạn và áp dụng nó cho một cổng XOR. Lấy tín hiệu đo và trì hoãn nó, ví dụ, bộ đệm 360 nối tiếp. Lấy đầu ra 360 của bộ đệm và (với các ràng buộc thích hợp) chuyển nó qua mux 360: 1 (cổng 360 VÀ bộ giải mã). Truyền đầu ra của mux vào cổng XOR. Truyền đầu ra của cổng XOR vào bộ lọc vòng lặp, sau đó lấy đầu vào và sử dụng nó để đồng hồ bộ đếm. Một khối điều khiển tự động đặt lại bộ đếm với một số tốc độ, ví dụ 1ms. Mạch điều khiển bước qua mux cứ sau 1ms, tìm kiếm số đếm nhỏ nhất. Trạng thái của mux tại thời điểm đó là góc pha tính theo độ.


0

Giả sử bạn có đồng hồ 600 MHz và bộ đếm. Bắt đầu đếm với độ chính của một tín hiệu, dừng bộ đếm [đọc kết quả] với cạnh đầu của tín hiệu thứ hai.
Độ phân giải là một hàm của sự khác biệt giữa tần số mẫu và tần số xung nhịp.
600/150 = 4 để bạn có được độ phân giải pha 4 bước [hoặc 90 độ].

Bạn muốn độ phân giải tốt hơn, trong khi vẫn ở với một FPGA? OK, nhưng điều này có một chút sôi nổi ...

Đầu tiên, bạn cần 2 mạch, "chì" và "lag". Chúng ta cũng cần gắn nhãn tín hiệu của mình "T" [Kiểm tra] và "R" [Tham khảo]. "Khách hàng tiềm năng" là: T VÀ (KHÔNG R). "Lag" là: R VÀ (KHÔNG T)
Tùy thuộc vào đạo trình hoặc độ trễ, một trong số này sẽ tạo ra tín hiệu có độ rộng xung tỷ lệ với độ lệch pha. Đặt từng đầu ra thông qua các bộ lọc thông thấp riêng biệt, có thể khoảng 1 MHz.
Cuối cùng, hãy đọc: http://www.latticesemi.com/~/media/Document/WhitePapers/AG/CreatingAnADCUsingFPGAResource.PDF?document_id=36525
Chi tiết này về cách triển khai SAR ADC trong một FPGA. Số hóa các tín hiệu "đạo trình" và "độ trễ" đã lọc: tín hiệu lớn nhất sẽ cung cấp cho bạn cường độ pha và dấu hiệu.

EDIT: Mô tả cổng logic của tôi không chính xác. Tra cứu một máy dò pha cho sơ đồ thích hợp


0

Sử dụng hai PLL. Tạo tần số càng thấp càng tốt, từ cả hai tín hiệu tần số cao. Giả sử 150 MHz -> 15 MHz. Độ lệch pha sẽ giữ nguyên giữa hai tín hiệu tần số thấp. Sau đó đo pha của các tín hiệu chậm này. (XOR chúng hoặc sử dụng bất kỳ logic nào khác)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.