Là Pi đủ mạnh cho một dự án dao động?


18

Mục tiêu của tôi là chế tạo các dụng cụ dựa trên Pi, bắt đầu bằng máy hiện sóng. Vì vậy, tôi đọc câu trả lời cho

Có vẻ như có thể đọc các đầu vào tương tự ở tốc độ lấy mẫu rất thấp, nhưng tôi tự hỏi liệu tôi có thể đạt được tốc độ mẫu lớn mỗi giây không. Thu thập dữ liệu liên tục có lẽ sẽ khó, nếu có thể, vì vậy tôi có thể làm mà không cần nó. Pi sẽ được trang bị cho điều đó? Tôi muốn quan sát các dạng sóng trên màn hình được kết nối với Pi lúc đầu và sau đó trên các thiết bị di động của tôi (trong khi Pi truyền dữ liệu không dây cho chúng).

Kinh nghiệm của tôi với hệ thống trên chip cho tôi biết rằng các hệ thống này có thể dễ dàng bão hòa trên I / O liên tục. Đây có phải là trường hợp của Pi không?

Câu trả lời:


22

Chúng ta hãy có một cái nhìn tổng quan cấp cao về những gì một máy hiện sóng có:

Đầu tiên chúng ta có mặt trước tương tự. Ở đây chúng ta có mạng kết hợp trở kháng cho các đầu dò (nhưng các đầu dò cũng sẽ phải có một phần khớp điện dung), phần suy giảm (rất quan trọng, vì vậy chúng ta không làm quá tải ADC hoặc cho điện áp cao vào), kích hoạt và kết nối với chuyển đổi tương tự sang kỹ thuật số. Tôi sẽ không nói quá nhiều về điều này, vì tôi không quá giỏi với những thứ tương tự, nhưng điểm mấu chốt là: Không có gì chúng ta có thể làm với Pi trong phần này.

Tiếp theo chúng ta có phần chuyển đổi tương tự sang kỹ thuật số. Bạn sẽ cần ít nhất một ADC cho mỗi kênh. Nhiều hơn có thể được sử dụng cho tỷ lệ mẫu cao hơn. Trong phạm vi truyền thống, ADC được kết nối với thiết bị ASIC hoặc FPGA. Chúng được sử dụng vì các máy tính truyền thống không đủ thời gian thực (và không nhầm lẫn thời gian thực với tốc độ nhanh!) Để xử lý dữ liệu do ADC cung cấp. Dữ liệu đó sau đó được lưu trữ vào RAM. Một số thiết bị sẽ sử dụng RAM tĩnh, một số thiết bị khác sẽ sử dụng RAM động. Nhìn chung, phương pháp SRAM truyền thống hơn và được thấy ở các nhà sản xuất tên tuổi, trong khi sử dụng DRAM dường như là cách tiếp cận mới hơn được thấy trong các đơn vị do Trung Quốc thiết kế rẻ hơn.

Dung lượng RAM và tốc độ của nó sẽ quyết định số lượng mẫu có thể được lưu trữ. Hầu như mọi khi ADC sẽ là ADC 8 bit, vì vậy, để nói rằng một megasample chúng ta sẽ cần 8 lần 100000 = 8 Mb hoặc 1 MB RAM. Đối với một MSa / s, chúng ta sẽ cần RAM có thể hoạt động ở tốc độ đó. Ngày nay, điều đó sẽ tương đối dễ dàng để có được. FPGA thường điều khiển RAM trực tiếp và chịu trách nhiệm lưu trữ dữ liệu trong đó. Nó hoạt động bằng cách lấp đầy bộ nhớ mẫu trong khi vẫn còn chỗ trống và sau đó ghi đè lên khi nó đầy. Khi có nhiều ADC trên mỗi kênh, FPGA sẽ đặt chúng để lần đầu tiên bắt đầu lấy mẫu, sau đó vào đồng hồ tiếp theo thứ hai, v.v. Khi họ hoàn thành việc lấy mẫu, mẫu của ADC đầu tiên sẽ được ghi vào bộ nhớ trước, sau đó là mẫu của ADC thứ hai. Điều này sẽ làm cho nó trông giống như các ADC đang lấy mẫu nhanh hơn thực tế.

Điểm tiếp theo trong phần này là các mẫu nên tương đương nhau về thời gian. Đây là vấn đề chính với việc sử dụng PC trong máy hiện sóng và lý do tại sao các GPU và ASIC là chủ yếu. Nếu một số mẫu bị trễ hoặc sớm, thì hình ảnh được hiển thị trên màn hình sẽ không chính xác.

Trong phần này chúng ta thấy việc sử dụng Pi đầu tiên có thể. Nếu tốc độ mẫu đủ thấp, chúng ta có thể điều khiển ADC trực tiếp từ Pi và lưu kết quả của chúng vào RAM của Pi. Chúng ta có thể đi nhanh như thế nào tùy thuộc vào cách ADC được kết nối với Pi và cách Pi thực hiện I / O của nó. Từ những gì tôi đã đọc, tốc độ cao nhất của các cổng I ^ 2C của Pi là 150 MHz (mức độ dễ dàng đạt được trong GNU / Linux là một câu hỏi khác) trong khi tốc độ chuẩn hóa cao nhất là 5 MHz và SPI có tốc độ cao nhất trong Pi là 250 MHz. Tôi không chắc tốc độ SPI tiêu chuẩn cao nhất là bao nhiêu, nhưng tôi hy vọng nó sẽ ở đâu đó trong phạm vi 100 MHz tối đa.

Vì vậy, về lý thuyết, chúng ta có quá nhiều tốc độ trên Pi để chạy ADC trong phạm vi MSa / s thấp. Tôi có cảm giác rằng tốc độ RAM sẽ không phải là vấn đề ở đây, nhưng tôi không có bất kỳ dữ liệu nào để sao lưu. Nếu đó là trường hợp, thì chúng ta sẽ có một lợi ích lớn so với phạm vi thông thường: Sẽ có một lượng bộ nhớ chụp rất lớn. Ví dụ: nếu chúng tôi dành 32 MiB RAM cho chương trình cho bộ nhớ mẫu và chúng tôi có hai kênh, điều đó sẽ khiến chúng tôi có 16 MiB cho mỗi kênh hoặc hơn một chút so với 134 Mb hoặc 134 megasamples trên mỗi kênh. Đó là điều mà thậm chí ngày nay nhiều máy hiện sóng không có.

Nhược điểm là chúng tôi cần sửa đổi nặng cho hệ điều hành để có thể lấy mẫu chính xác tại đây. Tôi không có bất kỳ kinh nghiệm nào với Linux thời gian thực, vì vậy tôi không biết điều này sẽ dễ dàng như thế nào.

Dù sao, hãy đến bước tiếp theo. Vì vậy, chúng tôi có một hệ thống lấy mẫu làm đầy RAM. Phần tiếp theo là kích hoạt. Kích hoạt có liên quan chặt chẽ với tốc độ làm mới màn hình. Những gì nó về cơ bản là tìm một mẫu thú vị và giữ nó trong bộ nhớ. Khi phạm vi kích hoạt, nó tiếp tục lấy mẫu sau khi kích hoạt cho đến khi nó lấp đầy bộ nhớ và sau đó nó sẽ gửi nó để được xử lý và hiển thị trên màn hình. Trong khi dữ liệu đang được xử lý, hệ thống lấy mẫu nếu thường bị đóng băng và chờ dữ liệu được hiển thị. Đó là lý do tại sao phạm vi cấp thấp có tốc độ làm mới thấp hơn trong khi phạm vi cao cấp sẽ có màn hình tốc độ làm mới cao đặc biệt và mất ít thời gian hơn để chờ dữ liệu được hiển thị.

Trong phần này thường sẽ có một ASIC hoặc FPGA khác sẽ xử lý tín hiệu trên các mẫu, bất kỳ giải mã giao thức nào nếu phạm vi hỗ trợ nó và thực sự điều khiển màn hình.

Đây là phần mà từ những gì tôi có thể thấy Pi có thể thực sự tỏa sáng. Nó có thể điều khiển màn hình 1920x1080 đẹp mắt (trong khi phạm vi thường ở vùng đất phụ 800x600) và có thể thực hiện giải mã giao thức rất độc đáo. Vấn đề duy nhất tôi có thể thấy là tốc độ và cách xử lý sẽ ảnh hưởng đến thời gian chờ. Nếu chúng ta đạt được tốc độ làm mới thấp, thì chúng ta có thể có được một bộ phân tích logic thực sự tốt với nó.

Cuối cùng, một từ về máy hiện sóng USB và tại sao nói chung USB lại tệ cho loại dự án này: Máy hiện sóng USB truyền thống thực hiện nhập và lấy mẫu và gửi dữ liệu lấy mẫu tới PC để xử lý ứng dụng máy chủ tồn tại. Về cơ bản một cái gì đó rất giống sẽ được thực hiện với Pi quá. Thông thường các ứng dụng PC được thiết kế tồi và đầy lỗi. Phần xấu tiếp theo là USB. Nó được quảng cáo là xe buýt nhanh có thể hoạt động 480 Mb / giây ở chế độ "Tốc độ cao". Sự thật là rất hiếm khi tìm thấy bộ điều khiển USB có thể hỗ trợ tốc độ cao như vậy (trung bình dường như là khoảng 250 Mb / giây so với những gì tôi đã thấy) và đó là một giao thức không phù hợp với bất kỳ thực tế nào ứng dụng thời gian. Đầu tiên, nó được chia sẻ giữa tất cả các thiết bị trên một hub (và Pi chỉ có một cổng USB mà Ethernet + USB Hub được kết nối), có chi phí tương đối cao (khi so sánh với SPI) và có độ trễ cao (hãy nhớ rằng với tốc độ 1 MSa / s, mỗi mẫu chỉ tồn tại trong 1 Lời nói, vì vậy chúng tôi phải có bộ nhớ trên bảng vì chúng tôi không thể gửi mẫu trong thời gian thực qua USB). Cuối cùng, việc sử dụng USB sẽ làm cho phần thu thập dữ liệu trở thành phạm vi chỉ là một máy hiện sóng USB khác và đó là nơi chúng ta mất đi bất kỳ lợi ích nào khi sử dụng Pi: Máy tính để bàn truyền thống phổ biến hơn nhiều, nhanh hơn, dễ lấy hơn và có khả năng USB tốt hơn nhiều.

EDIT Tôi đã đọc một bài đăng tương đối gần đây của Gert van Loo và theo anh ấy, tốc độ thực tế cho I ^ 2C của Pi là 400 kHz và cho SPI là 20 MHz.


Vì vậy, đỉnh cao của câu trả lời của bạn là gì? Điều này giống như một wiki.
Piotr Kula

@ppumkin Vâng, một câu hỏi như thế này đòi hỏi câu trả lời như vậy .. Chà không có đỉnh cao. Chúng tôi chưa được cung cấp đủ thông tin về hiệu suất dự kiến ​​của thiết bị mà chúng tôi cần vì vậy giả sử rằng Pi sẽ mua lại, điểm mấu chốt sẽ là có, với tần số đủ thấp. Nếu Pi không mua lại, thì việc sử dụng Pi là vô ích vì hiệu suất USB kém.
AndrejaKo

8

Chúng tôi đã tìm thấy Raspberry Pi là một nền tảng tuyệt vời để chạy phần mềm bạn cần cho một dự án như thế này. Vấn đề là đưa tín hiệu vào RPi ngay từ đầu và thực hiện thu tín hiệu thời gian thực miễn phí jitter tốc độ cao trên cùng một CPU chạy O / S và phần mềm ứng dụng. Giải pháp của chúng tôi là Máy đo dao động BitScope Raspberry Pi kết hợp BitScope (để chụp dạng sóng tín hiệu hỗn hợp tốc độ cao) với Raspberry Pi chạy tất cả các phần mềm cần thiết.

nhập mô tả hình ảnh ở đây


phích cắm không biết xấu hổ =)
lenik

2
Đó là tuyệt vời. Nhưng nó không có gì để làm với câu trả lời! Hoặc có thể nó chứng minh rằng Pi yếu để trở thành một máy hiện sóng?
Piotr Kula

Pi không "quá yếu" nhưng nó không có khả năng I / O cần thiết cho việc thu nhận dạng sóng (tốc độ cao). Theo lời của câu hỏi ban đầu, đó là "được trang bị cho điều đó" :-)
BitScope

2

Lưu ý: Đây không chỉ là một đoạn văn bản 'nghĩ to' mà là một câu trả lời thực sự

Ý tưởng này cũng xuất hiện trong đầu tôi một thời gian trước đây, và tôi vẫn thích ý tưởng chung!

Theo tôi biết, phạm vi cao cấp là từ 15 năm (hoặc thậm chí nhiều hơn) chỉ là máy tính (PC) với một loạt các I / O tốc độ cao chuyên dụng. Tôi nghĩ rằng khi I / O tương tự được thiết kế / kết nối với RPi, kết quả có thể tốt đáng ngạc nhiên.

IMHO một cách tốt để làm điều này là để RPi chỉ lưu trữ và hiển thị dữ liệu đã thu thập (ví dụ nhận được qua cổng USB) và để một số phần cứng chuyên dụng thực hiện phép đo tốc độ cao. Đơn vị đo tốc độ cao này sau đó cũng có thể được điều khiển bởi RPi dựa trên đầu vào của người dùng hoặc một cái gì đó tương tự.

Trong phiên bản đầu tiên trên RPi, có một số vấn đề với các cổng USB, tôi đã không tìm kiếm gần đây nếu chúng được giải quyết vào lúc này. Tôi cũng nghe một tin đồn rằng phiên bản 2.0 mới của RPi không nên có những vấn đề này, nhưng tôi cũng chưa kiểm tra tin đồn này.

Tôi nghĩ rằng kết quả mà không có bất kỳ phần cứng (chuyên dụng) bên ngoài nào bị hạn chế do số lượng cổng I / O và thực tế là toàn bộ hệ điều hành đang chạy trên nó (làm hạn chế các tùy chọn thời gian thực). Trừ khi bạn có kế hoạch viết hệ điều hành của riêng bạn?

Ngoài ra, sử dụng chip I2C cho mục đích này sẽ không có đủ tốc độ để làm điều gì đó thực sự tốt đẹp. SPI cung cấp thêm băng thông (tối đa 100Mhz từ đỉnh đầu của tôi), nhưng tôi sẽ sử dụng USB và nếu cần nén, hoặc sử dụng một số sơ đồ mã hóa tốt trước khi gửi dữ liệu, để có thêm băng thông.

Vì vậy, tôi đoán là có thể, nhưng phần cứng cần được thêm vào RPi sẽ đắt hơn nhiều so với RPi.

Cuối cùng nhưng không kém phần quan trọng (trước khi tôi ngừng mơ mộng về chủ đề này) Tôi sẽ không ngạc nhiên nếu một tìm kiếm trên internet sẽ dẫn đến việc một số nhóm đã bận rộn làm việc này.


1

Câu trả lời là Có.

Nó đủ mạnh! Nhưng chỉ với một số tần số nhất định - Như đã chỉ ra vì những hạn chế.

VÌ THẾ! -> Bạn phải tự hỏi mình muốn đo cái gì?

  • Bởi vì bạn không hỏi cụ thể những gì bạn muốn đo lường các câu trả lời được mở cho đầu cơ.
  • Vì vậy, hãy để tôi giới thiệu cho bạn các lựa chọn thay thế và đề xuất. Có lẽ bạn có thể hỏi một câu hỏi mới cụ thể hơn đối với Raspberry và không phải là chủ đề Dao động nói chung!

Dao động có thể dao động từ tần số thấp đơn giản có giá 5USD, và sau đó những người khác có thể xử lý đến 50Ghz + - chi phí đó tương đương với một ngôi nhà nhỏ! 75.000USD-100.000USD!

Tôi nghĩ rằng Raspberry sẽ đủ tốt để đo tần số Giga phụ, như tín hiệu không dây 433 MHz, truyền thông bus CPU tốc độ thấp, TTS / UART, gỡ lỗi I2C - thực sự không nhiều. Và tần số cao hơn sẽ không thực sự chính xác, vì theo thiết kế, Raspberry không chạy hệ điều hành thời gian thực. Vì vậy, bạn sẽ cần bắt đầu với HĐH (hoặc như các thiết bị thời gian thực bên ngoài đã đề cập- Nhưng vấn đề là gì?)

Nhưng nếu bạn thực sự muốn đo tín hiệu, thì bạn có thể mua một thiết bị thực sự tốt và có giá tương đương với thông số kỹ thuật của Raspberry. Nhưng đã được thiết kế tốt, đầy đủ các tính năng, thực sự trưởng thành trong thiết kế và chứng tỏ nó tự tiện dụng trong môi trường sở thích.

Không cần phải phát minh lại bánh xe ở đây. Ví dụ: Nano DSO cho kênh đơn dưới 100USD.

nhập mô tả hình ảnh ở đây

Kênh Quad Quad DSO với giá dưới 200USD

nhập mô tả hình ảnh ở đây

Và sau đó, những gì một Raspberry hoặc thiết bị tương tự KHÔNG THỂ LÀM!

Và tiêu tốn một gia tài nhỏ ...

nhập mô tả hình ảnh ở đây

  • Lên đến 110Ghz, với ổ cứng để lưu trữ dữ liệu, cực kỳ chính xác, mô phỏng và kích hoạt.
  • Các biện pháp Buuetooth, WCDMA / EDGE / 3G / 4G, A / B / G / N 2.4Ghz / 5Ghz, SATA, AGP / PCI / PCI-Express, tín hiệu vệ tinh thô, kênh đầu ổ cứng, Ethernet, v.v. .

2
Tôi có thể thực hiện CUỐN SÁCH RPi của mình như Rohde & Schwarz, sẽ rất tiện lợi, có thể hơi trên đồi, trường hợp mod :-)
ikku

LOL! Đó sẽ là một cảnh tượng cho đôi mắt đau :)
Piotr Kula

1

Bạn có thể kết nối một trong chúng tôi TiePie kỹ thuật Handyscope HS5 dao động / máy phát điện dạng sóng tùy ý vào cổng USB. Một thư viện được biên dịch cho Raspberry Pi để sử dụng đồng thời một hoặc nhiều máy hiện sóng để tải xuống. Các nhạc cụ sử dụng thời gian và bộ nhớ riêng của mình, do đó không có mất hiệu suất. Vì vậy, có, Pi đủ mạnh cho một dự án dao động.

Tay cầm HS5

Thông số kỹ thuật chính của máy hiện sóng: 2 kênh, 14 bit, 500 MS / s, băng thông 250 MHz, phát trực tiếp khoảng cách liên tục 20 MS / s 14 bit, bộ nhớ 32 MS trên mỗi kênh, độ chính xác cơ sở thời gian 1 ppm.

Thông số kỹ thuật chính của Máy phát dạng sóng tùy ý: Dạng sóng 1 sóng Hz đến 30 MHz, 240 MS / s, bộ nhớ 14 bit, 64 MS, đầu ra -12 đến 12 V (24 Vpp), độ chính xác cơ sở thời gian 1 ppm.


Xin chào. Trong tương lai, vui lòng tiết lộ liên kết của bạn với sản phẩm bạn đang quảng cáo. Cảm ơn bạn.

Bly tôi! Nhìn vào giá cả! Trông giống như sản phẩm tốt đẹp mặc dù. Không nằm trong phạm vi ngân sách của tôi.
Piotr Kula

Đã không nhận thức được sự cần thiết tiết lộ liên kết. Thay đổi văn bản để cho biết tôi liên kết với kỹ thuật TiePie.
Marthein

0

Cơ hội tốt nhất của bạn là thử nếu sigrok và nó có thể được biên dịch libsigrok trên Pi, sau đó mua một số phần cứng dao động tương thích. Bằng cách đó bạn có thể lấy tín hiệu lên tới 24 mega mega mỗi giây. Với đủ kiến ​​thức, bạn có thể tùy chỉnh phần mềm theo bất kỳ cách nào bạn muốn, bao gồm cả truyền không dây đến thiết bị di động.


0

Một số người nói về Sigrok. Tôi nghĩ rằng cách gần nhất là sử dụng tài liệu tốt CY7C68013A với trình điều khiển EZ-USB FX2LP. Trên máy tính để bàn, nó không hoạt động với Weezy, nhưng trên Jessy thì nó hoạt động tốt. Dưới đây là giới hạn được biết đến khoảng 24 Msps. Tôi nghĩ về một cách khác, sử dụng giao diện máy ảnh. Giao diện này có thể quản lý 2,1 pixel pixel và 30 khung hình mỗi giây, điều đó có nghĩa là nó có thể chuyển dữ liệu sang GPU với tốc độ hơn 60 "mẫu" mỗi giây. Làm tăng thêm hữu ích sau đó là 20 MHz SPI hoặc USB.


Đây là các giao diện kỹ thuật số, do đó, điều này sẽ không tạo ra máy hiện sóng trừ khi bạn lái chúng với đầu ra của ADC tốc độ cao. Hầu hết các giải pháp thực tế mẫu đơn đặt hàng có cường độ nhanh hơn, nhưng không thực hiện liên tục - điều này phù hợp hơn cho các vấn đề thông thường.
Chris Stratton

-1

Nếu bạn không bị giới hạn ở tần số âm thanh, tôi sử dụng bộ chuyển đổi A / D kênh đôi 12 bit MCP3202 rẻ tiền để thu được trên pi với spidev và pydatascope để hiển thị dữ liệu được truyền qua Ethernet qua ổ cắm TCP. Pydatascope cũng hoạt động như một máy phân tích quang phổ!

Tôi đã thực hiện các thay đổi tương đối nhỏ đối với mã nguồn mở pydatascope để có các kênh kép, chủ yếu là vì nó dễ dàng và không phải là tôi thực sự cần nó.

Gửi theo dõi hoặc gửi thư trực tiếp cho tôi nếu bạn có bất kỳ câu hỏi nào, tôi sẽ vui lòng giúp đỡ.


Bạn đang sử dụng hình ảnh có bản quyền của tôi mà không được phép. Vui lòng xóa hình ảnh có bản quyền khỏi trang web của bạn.
James Phillips

Cảm ơn bạn đã trả lời @James Philips. Tôi xóa hình ảnh khỏi câu trả lời của bạn. Nó đang chờ để được xem xét. Lưu ý rằng tôi không phải là người thêm nó. Bạn có thể cung cấp địa chỉ trang web của bạn có chứa hình ảnh cho những người quan tâm để xem không?
niw3
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.