Interconnect能导入matlab生成的data?

interconnect

#1

老师您好!我现在想用Interconnect测试自己仿真的MZI调制器的性能,但RF信号源不想用Interconnect自带的PRBS,想用自己组里用Matlab产生的data文件,里面做了奈奎斯特滤波,加同步训练序列等操作,请问老师该怎么与matlab联动,或者怎么把data文件输进来?


#2

Direct link: https://kb.lumerical.com/en/index.html?ref_scripts_matlabload.html


#3

不好意思,您的回答不是我期待的答案


我的意思是,如上图中的MZM modulator,现在它的RF port接的是PRBS模块经过map产生的数字信号,我现在希望我的信号源是一个.mat文件,但是什么模块可以完成这个对接的工作?谢谢!


#4

Hi @ruanxiaoke,

你好。直接导入.mat文件就不行,现在只可以使用matlabload读入数据。但是你可以考虑matlab automation API, 不过在这种情况还不能适用。如果你可以把数据保存到.txt文件的话,你可以使用Agilent ADS Import 或者
Mentor Graphics Eldo Import 这两个元件完成。文件的格式全部是两列,第一列是时间点,第二列是对应的waveform。这个导入之后直接是电信号,所以可以直接调制调制器。

希望可以帮到你 :slight_smile:


#5

你好,我找您的方法试了,还是不行,首先是用安捷伦模块做的,示波器没有收到任何数据


这是另一个模块做的,说端口数目不匹配

这是我用的icp文件
qpsk_qam_transceiver.icp (1.2 MB)
这是调制器I路数据,两列,一列时间,一列电平
I1.txt (1.6 MB)
Q1.txt (1.6 MB)
这是测试模块用的小程序
test.icp (89.7 KB)

求解决,还有root element那边应该怎么设,因为数据是从txt导入的,应该怎么设。
在线等,急!!!!!


#6

希望尽快解决!!谢谢


#7

Hi @ruanxiaoke,

谢谢你的资料。由于有时差,不能及时给你在线回复,但是算好时差差不多下一天我们就会回复了,下次不要再在线等了 :slight_smile:

这里面问题有两个,.icp文件的电路设计都没什么问题,root element的仿真时域参数的确需要调整一下,另外.txt文件中数据分隔要用空格,不是tab。元件库里面有一些元件只认空格,所以都用空格最保险,我已经改过你的文件了(I1.txt (1.6 MB), Q1.txt (1.6 MB)),现在可以用了。另外这两个元件并不是完全相同,使用 Mentor Graphics Eldo Import 元件.txt文件直接是数据就可以,使用Agilent ADS Import 元件在.txt文件中要加上一个header:

BEGIN TIMEDATA
#    T    ( SEC V R xx )
%    t    voltage

其中第一行最重要,一定要有;第二行是optional的,要不要都行;第三行是format,我试过,没有也可以。

我只在‘Q1.txt’里面加了header。这两个元件作用基本一样,你可以就选择其一使用,保持一致的文件格式就好了。例子:testfile.icp (139.3 KB)

再说时间域仿真参数的设置。你在.txt里面的数据对应的是sample点,所以1/time step = sample rate,然后再根据总共的点数来设置’number of samples’, 就是文件里面总共的点数。根据你的samples per bit来设置bit rate。这个时候把’simulation input’设置成’time window’比较方便

因为数据之间互相影响,我推荐的设置步骤是:

  1. time window = the last time point in the file
  2. sample rate = 1/time step
  3. bit rate = sample rate*samples per bit

这样设置完应该就没什么问题。transceiver文件我相应改了一下,现在是1 sample per bit,你根据自己的需要再改bit rate就好了。qpsk_qam_transceiver.icp (840.1 KB)

希望可以帮到你 :slight_smile:


#8

哇,非常感谢老师的回答,我还有最后一个问题:
interconnect在仿真的时候,如果你的number of samples比你给的数据点数多,是不是自动进行过采样后再仿真?也就是说可以把bitrate设成我给的txt数据的符号采样率,然后这时候对应的samples per bit 就是系统自身过采样的倍数了?我这样理解对不对


#9

还有提个小建议,你们官方给的qpsk_qam_transceiver.icp 的例子里面的相干接收机有个地方连得不对,应该是本地载波的某个分束进行pi/2的相移,而不是信号的某个分束进行pi/2相移,我在解码的时候发现了这个问题。


#10

Hi @ruanxiaoke,

你好。自动过采样是不会的,如果是通过文件导入,那文件里定义的已经是采样点。如果要upsample可以试试用这个元件:Rational Resampler,可以通过设置实现upsample 或者downsample。如果设置的sample数大于文件里给的sample数,后面应该会自动补0,你可以试试。

我看一下QPSK的文件,的确通常相移是加在local oscillator上的。更改文件后会在跟你跟进,谢谢。

希望可以帮到你 :slight_smile:


#11

Hi @ruanxiaoke,

我看了一下,当时可能是为了视觉上比较直观,让实部对应上面的branch虚部对应下面的branch才把相移加在信号上了,当然得到的信号是-1乘以原始信号,解调的时候需要相应改一下。把相移加在本地载波上的话下面branch得到的信号是实部,上面是虚部,解调的时候会更方便,如果还要用到VSA的话就要把虚实部的input换一下连接。我改了一份文件,你可以先用,可能对后续信号处理更直观方便一点。qpsk_qam_transceiver.icp (872.0 KB)

我们也一直在找一些信号处理的例子,你是在做什么处理呢?可以分享一下吗?谢谢 :slight_smile:


#12

也就是一些简单的同步、均衡算法