其实如果没记错的话,AD9363才一百多人民币,没必要用电视棒芯片了。
RTL2832作为成本最低的SDR接收设备,要是能够互相同步工作就可以开发出很多玩法,例如可以做成干涉式测向机或者MIMO多天线接收机之类的东西。RTL电视棒成本便宜,按照淘宝上50一个的价格组个有十几个单元的阵列也比一台HackRF便宜。于是上网查找到了如下的一些资料:
Well, Realtek developed the driver themselves, so I'm pretty sure they just used their internal documentation that will probably never leave Realtek. The datasheet I've seen is more aimed at the people doing the layout of such DVB-T sticks, like pinout, power requirements etc. Some registers and the general USB commands are described as well, but that's about it.
(1) The USB interface is on-chip. The RTL2832U contains an 8051 core which handles the USB control side of things, like enumeration, I2C transfers, IR receiver, and a hardware FIFO which handles the bulk transfers. So the 8051 never sees the actual samples.
(2) Yes. In fact, the demodulator is a sub-chip on the die of the RTL2832U, and its registers are exposed via I2C. This I2C bus is shared, you can enable a repeater so that the tuner is 'attached' to the bus. Since you may need to communicate with the demodulator while receiving, you don't want to have the I2C activity leaking into the tuner as noise.
(3) Well, the point of librtlsdr is abstracting the whole dongle so it can be used with little to no knowledge of its inner workings. But all code in the tuner_*-files accesses the tuner, everything in librtlsdr.c accesses the RTL2832U + demod subchip. There is one exception, for the detection of the tuner we access it directly from librtlsdr.c.
(4) There is more to it. First of all, it depends if you use a zero-IF tuner like the E4000 or a low-IF tuner like the R820T. In the first case, both I and Q ADCs are used, in the second case only one of them is used. The ADCs sample the signal with a fixed rate of 28.8 MHz, which is then passed through a DDC (digital downconverter), a lowpass-filter and into a resampler (which then downsamples to our desired samplerate, 3.2 MHz at max.). The DDC only comes to play for low-IF tuners or the direct sampling mod, and it shifts and filters out the desired part of the spectrum, generating I/Q samples from real samples.
(5) You can look up quite a few registers in the Linux kernel driver I mentioned, but some things were figured out by playing around with it. I tried setting almost every bit in every register and see what happens. Most interesting things (like the counter mode that is used to check for lost samples in rtl_test) were figured out this way. I haven't seen it being mentioned anywhere else.
(6) Yes, just take a look at rtl_eeprom. It doesn't contain code, only parts of the USB descriptor, a few uninteresting settings, and the keymap for the infrared remote. What I did though, is dumping the maskrom of the RTL2832U which contains the 8051 code. Nothing really interesting in there, some USB initialization, reading the EEPROM, some IR-receiver-related stuff, the USB->I2C bridge and that's about it. And no, the code cannot be changed.
(7) Depends on which AGC. There's an AGC in the tuner, and a few more AGCs inside the RTL2832U: The RF-AGC, IF-AGC and DAGC. Both the RF-AGC and IF-AGC are disabled, since we control the gain of the tuner directly or let the tuner handle the gain control. They are only used for DVB-T reception so that the demodulator can generate an analog control voltage to control the tuner RF and IF gains to achieve the best SNR. The DAGC (Digital AGC) does nothing more than scaling the sample values, and is exposed through rtlsdr_set_agc_mode().
(8) This mode is used for the direct sampling mod, where you bypass the tuner and directly feed the RF signal to the ADC input. If enabled, the IF mode is activated and calls to rtlsdr_set_center_freq() actually set the IF frequency of the DDC. This can be used for HF-reception from 0 to 14.4 MHz.
不过作者提到的类似“The datasheet I've seen is more aimed at the people doing the layout of such DVB-T sticks, like pinout, power requirements etc. Some registers and the general USB commands are described as well, but that's about it.”这样的手册我也没有在网络上找到。
虽然RTL-2832本身没有官方的公开datasheet,但是电视棒里常用的配合RTL2832使用的射频前端芯片R820T和E4000的手册都很容易找到,例如这是其中一页的框图
不过经过多次查找,还是找到了电视棒的框图和实际电路
框图(应该也是猜测的): 电路: 电路图的说明:
少し前から、実験の為に、「DVB-T DAB+FM」のドングルについて、回路図が必要でした。
すこしずつ回路をトレースしながら、水魚堂さまの「Bsch3V」の勉強を兼ねて、書き溜めてきました。
バイパスコンデンサは面倒なので書いてありませんが、かなり実用的になってきたので、皆様に間違いを指摘して頂けたらなと思い、公開することにしました。
購入した物を見て、リバースエンジニアリングで作成したので、著作権はGNU General Public License (GPL) に準拠します。個人で利用することはかまいませんが、転載には、出所元を明確にしてください。また販売等の商業利用は禁止です。尚、回路図に記載された半導体や回路、部品について、どこの企業とも、NDAの契約はしておりません。
権利を侵害すると主張する方がおられましたら、コメントに記載してください。
まあ、硬い話はおいといて、間違いがあれば、教えてください。
まだ、回路的に変更すべき所もありそうです。
尚、このままでは製作できないように、肝心なPLLのフィルターはモジュールにしてあります。
信号ピンの名称は、私が勝手に付けました。
这个电路图也是逆向工程出来的。。
综合上面查找到的资料可以得出这样的结论:
RTL2832芯片其实有两路28.8M采样率的ADC(对于R820T这样的低中频前端实际只使用一路),但是在内部又经过了一次数字的下变频(对于低中频前端)和重采样,导致SDR模式实际上最多只能输出2.56M采样率的I/Q信号。
RTL2832芯片使用的28.8MHz时钟是由前端R820的时钟晶振提供的(其实这个28.8MHz的时钟就是ADC的时钟?)。
由此来看似乎只需要把多个电视棒的R820T的晶体全部都拆掉并且由它们的Xtal_i引脚统一输入同步的28.8MHz时钟信号就可以实现多个电视棒的同步运作?请教一下这样可行么?
[修改于 7年7个月前 - 2017/07/01 18:33:10]
引用 虎哥:有道理。。看来只能测试下了,另外不知道多个USB设备分别连接到PC上要不要专门的措施对多个USB的传输进行同步?毕竟多个USB有可能不是同时连接上的,传输的数据流开始的时间可能不一样。
既然是黑箱,只能实测一下,原理上这样能说通,如果里面时序是严格的、一致的就行。另外数据也要同步,不知道里面有没有可能导致提前或推后一帧的缓存之类东西,毕竟他要做重采样和数字滤波。
其实如果没记错的话,……
引用 虎哥:因为这个电视棒芯片只有自带的一个USB能作为输出。。看来这样的话是不大可行的了。。
为什么要用多个USB,数据要按一定规律组装好了再传送啊。我没遇到过多个USB还要同步传送的问题,希望其他网友解答。通常对于分布式接收系统,是通过在数据中打时标的方式来同步的,但这个同步精度不足以进行相……
引用 ry7740kptv:图上说这个是最高"stable"的速率,在这个速率下可以不丢数据。。大概3.5M的速率也是能用的。。只是可能丢数据。。
为啥ExtIO里可以设置最高采样率3.5M???
引用 radio:HackRF的上变频器RFFC5072最高6G,7.24G已经是超标应用饿了。。
图上说这个是最高"stable"的速率,在这个速率下可以不丢数据。。大概3.5M的速率也是能用的。。只是可能丢数据。。
另外话说我的hackrf在gqrx能调到7.24G。。不知道什么原理。。
引用 panjun11:有相关的链接么?
这个已经有人这么做了吧 一主一副, 用个跳线把晶振串起来, 当时好像是用来收4g信号的
引用 panjun11:看了下,貌似这个同步的原理是先调到同一频率上然后利用这个频率上的短信号来进行同步,不知道这样精度有多高。。不过用来收GSM应该是没问题的。。
XXXXXXXXXXXXXXXXXXXXXX/multi-rtl-a-gnu-radio-block-for-combining-and-time-synchronizing-multipl……
200字以内,仅用于支线交流,主线讨论请采用回复功能。