#记录项目经验和复盘
本文的作者,通过借鉴GITHUB的开源代码,同时借鉴了中国知网几位硕士研究生(杨翠翠/许诚昕/高玉栋/)的论文,以及《IEC_60488_1_2004_IEEE 488.1》,《中华人民共和国国家标准GB/T 1 5946--2008/IEC 60488-1:2004》,完成了公司安排的任务,所以分享经验,记录成长。
本文章借鉴了GITHUB 上开源的gpib 代码,链接:
”gpib“ 的搜索结果 | GitHub 中文社区
1..如果要把机器配置成可说可听,
要在代码里面设置哪些功能?
除了C 之外的全部。
2. 在上位机扫描设备的时候,机器并未发送并行轮询响应,为什么控者还是能扫描到公司机器?
因为在将公司仪器设置成
侦听者的时候,NDAC被拉低了很长一段时间来应答控制者
3.1 因为GPIB 接口电平识别的特性,所以输出的DAV, GPIB_OUTPUT,EOI, SRQ_out
都是取反后输出。
为了还原输出的电平,所以这些信号被输入的时候,也要被取反。
(因为电平识别是相反的,1被识别成低电平,所以输出要先取反,保证信号被硬件识别;因为取反后输出,所以输入也要取反,才能还原原来的电平。)
输出要取反:
DAV <= not gpib_DAV_out when TE else 'Z';
DAV_in <= DAV;
输入也要取反:
gpib_DAV_in <= not gSync_DAV_out;
3.2 但是NDAC/NRFD的输入输出都不用取反,因为NFRD为0,表示的是RFD有效,能直接被GPIB 接口电平识别,所以RFD报文直接赋值给NFRD,不用输入输出取反。4.如何确定GPIB 的时钟频率?见右图:公司的机器,在AH功能的ST_ACDS 状态(备注:在逻辑分析仪上看到的NRFD/NDAC 信号,是1就是RFD/DAC 报文为真,是0就是NRFD/NDAC 报文为假。),也就是A1 - A2间隔部分,计数2次用了190ns, 也就是说,只要ST_ACDS 状态持续时间超过190ns,就能满足时序要求。因为时钟频率越大,时钟周期越短,所以推测出时钟频率要大于:1*10^9 / (190 /2 )= 5.26 mhz,所以时钟频率选择4mhz。
5.板子的电路,是三态门的,要怎么设置5管理线的方向?
5.1. 因为没有控制(C)功能,所以 SRQ 信号全部设置成输出。
5.2. 因为没有控制(C)功能,所以 IFC 信号全部设置成输入。
5.3. 因为没有控制(C)功能,所以 ATN 信号全部设置成输入。
5.4. 因为没有控制(C)功能,所以 REN 信号全部设置成输入。
5.5. 因为EIO可以由控者发出,也可以由讲者发出,所以 EIO 信号需要设置成三态。
7.代码修改记录
7.1 去掉gpibInterface模块 C 功能
7.2 去掉InterruptGenerator模块
7.3 去掉WriterControlReg1模块
7.4 去掉ReaderControlReg1模块
7.5 去掉GpibStatusReg模块
7.6 去掉gpibBusReg模块
8.如何理解LE/TE 功能的副地址?
所谓副地址,就是GPIB 设备的另外一个地址,就是同一个GPIB 设备,可以用到2个不同的地址来表示。
9.如何理解串行轮询的请求服务?
串行轮询是,某一个设备通过拉高rsv 来输出SRQ 线为高,所以总线会发起串行轮询序列,来确认是哪一个设备输出SRQ 线为高,直到确认是哪一个设备发起的服务请求,否则会一直发起SPE 多线报文的串行轮询序列。