成功众筹11万美金的开源LA——DSLogic逻辑分析仪评测
扫描二维码
随时随地手机看文章
在电子世界特别是MCU的世界里,不管你是硬件工程师还是软件工程师,逻辑分析仪(LOGIC ANALYZER,下文简称LA)都是必备工具之一。
逻辑分析仪是分析数字系统逻辑关系的仪器。逻辑分析仪是属于数据域测试仪器中的一种总线分析仪,即以总线(多线)概念为基础,同时对多条数据线上的数据流进行观察和测试的仪器,这种仪器对复杂的数字系统的测试和分析十分有效。逻辑分析仪是利用时钟从测试设备上采集和显示数字信号的仪器,最主要作用在于时序判定。由于逻辑分析仪不像示波器那样有许多电压等级,通常只显示两个电压(逻辑1和0),因此设定了参考电压后,逻辑分析仪将被测信号通过比较器进行判定,高于参考电压者为High,低于参考电压者为Low,在High与 Low之间形成数字波形。现代逻辑分析仪除了上述基本功能之外,还加入了协议解码及分析的功能,能根据采集到的信号,对一些常见的通信协议如UART、I2C、SPI进行解码、分析,以一种更符合逻辑的方式呈现给开发者。
DSLOGIC是一款开源的LA,由DREAMSOURCELAB在KICKSTARTER上首先发起并众筹成功。除此之外,DREAMSOURCELAB还在此基础上开发出一系列的产品,如虚拟示波器及相应的外设等。
开箱
DSLOGIC产品的包装非常朴素,使用环保的牛皮纸包装盒。包装盒上只有DSLOGIC的LOGO及工作室的网址,非常简洁,但令人印象深刻。
包装盒内包含如下组件:
DSLOGIC全家福
DSLOGIC盒子非常小巧,三围分别是89mm X 89mm X 9mm,DSLOGIC盒子外观设计同样也非常简洁,一侧是探头排线接口,另一头是MICRO USB接口,盒子上方有一个工作指示灯,指示采样及工作状态。盒子表面采用金属拉丝工艺处理,看上去非常高档大气上档次,黑色的盒子透露出神秘、高端的质感!整体感觉,DSLOGIC盒子外观小巧,简洁、精致。
探头排线接口
MICRO USB接口,与PC相连
带地线屏蔽的探头排线
[!--empirenews.page--]
DSLOGIC探秘
DSLOGIC介绍
DSLOGIC是一款基于USB的设备,硬件盒子负责数据采集及存储,通过USB接口上传给上位机软件DSVIEW进行分析及解码。
内核基于Xilinx Spartan-6 FPGA+SDRAM的产品架构,可以提供高达400MHz的实时采样,50MHz的状态采样,16M*16通道的采样深度。基本参数如下。
最大采样率:
4 channels @ 400MHz
8 channels @ 200MHz
16 channels @ 100MHz
板载存储深度:
Total 256M (16M samples per channel)
连续可调的阈值电压范围: 0.5V to +4.5V
输入电压范围: -30V to +30V
输入阻抗: 250Kohm
输入通道带宽: 50MHz
最大的状态采样时钟: 50MHz
和一般的LA相比较,DSLOGIC有如下特色:
1.
256Mbit的板载内存保证高达1.6Gbps采样数据的实时存储。入门级逻辑分析仪大都会对带宽或者存储深度的指标进行妥协,而大大降低此类逻辑分析仪的实用性。例如saleae通过USB实时传输,利用上位机的内存来存储数据,很好的解决了存储深度的问题,但是由于USB带宽受限,最高只能达到200-300Mbps的采样带宽;Open Workbench Logic Sniffer则采用了FPGA内部的BRAM作为存储空间,同样具有1.6Gbps的采样带宽,但是存储深度只有216Kbit。
2.
16级组合式高级触发功能,轻松设定复杂的触发条件。触发作为逻辑分析仪最重要的特性之一,直接影响到采样定位的精确性。大部分入门级的逻辑分析仪都不具备高级触发功能,让使用者在大量的无用信息中寻找和定位问题,浪费宝贵的时间。
3.
连续可调的电平阈值。基于高速比较器的电平采样电路,不仅可以随意调整电平阈值的高低,从而适应不同的信号标准(1.2V/1.5V/1.8V/3.3V/5.0V),而且可以把电平判断的精确度提高到100mV以内的水平,获得最大的噪声容限,大大降低了误判和采样毛刺产生的可能性。入门级逻辑分析仪大都采用固定电压标准的接口芯片进行电平判断,无法保证采样结果的精确性。
4.
DreamSourceLab的上位机软件同样采用开源架构,现已支持多达44种协议的解析功能。在开源社区的支持下,这个数字还会继续增长。每个人都可以为这个免费的协议解析库做出自己的贡献。
硬件及软件安装
以开源之名,DSLOGIC套件支持众多的操作系统,主流的三大系统都在支持之列: WINDOWS,LINUX,MAC OS。下面以常用的WINDOWS系列为例,安装硬件驱动及上位机软件。
DSLOGIC的硬件驱动包含在上位机软件中,从官方网站下载上位机软件,选择WINDOWS版本下载。最新的版本是DSView(Beta)_v0.9.5.1_setup.EXE。双击安装,本文测试使用的操作系统是WINDOWS 10。将MICRO USB的一端与DSLOGIC连接,另一端连接至PC。然后打开C:\Program Files (x86)\DSView\Drivers文件夹,里面包含X86及X64的驱动,根据自己的操作系统版本,安装对应的驱动。
需要注意的是,在WINDOWS10下,可能安装驱动时要禁用数字签名,才能成功安装系统。安装成功后设备管理器里应该出现DREAMSOURCELAB DSLOGIC字样。
正确安装好设备驱动后,打开DSVIEW软件,这是DSLOGIC的上位机软件,同时软件会自动检测到DSLOIC设备。
可以看到DSLOGIC已准备就绪,16个采集通道也准备开始采集数据。
我们也可以先打开软件的DEMO DEVICE,这是一种演示模式,体验一下采集的效果,这个功能甚至在没有连接硬件设备的时候都可以使用。
各通道的颜色可以自行设定,根据自己的审美,选择一组适合自己的颜色,工作起来更赏心悦目!
上位机软件的工作界面非常简洁,要调整不同的工作参数,可以通过软件界面上部的各功能设置框或按钮进行调整。
上位机软件DSVIEW的功能非常强大,这个软件不仅仅适用于DSLOGIC,同时也适用DREAMSOURCELAB自家另一款产品,DSCOPE虚拟示波器。
[!--empirenews.page--]
测试
漂亮的外观已给我们留下了深刻的印象,然而DSLOGIC的真正魅力来自它强大的逻辑分析功能。
让我们请出本次测评的另一主角,STM32F4-DISCO,让它来见证奇迹的时刻。
为了展示DSLOGIC强大的功能,我们设计了几段代码,让STM32F4-DISCO产生若干数字信号,通过检测捕获到的信号,与原始设计的理想信号进行比较,来展示DSLOGIC的强大功能。
测试的信号主要包括如下几个方面:
- · 电平翻转信号,包含状态及时序信息
- · PWM信号,包含状态及时序信息
- · 通信协议,包含状态、时序、编码信息
STM32F4-DISCO评估板是ST官方推出的供快速开发及建立原型的一块开发板,使用STM32F407VGT6 MCU,最高可以工作于168MHZ频率。板载8M外部晶振,能提供比较准确的外部时钟信号。
关于本次测试中用到的测试代码,后面附录提供了完整的工程信息,具体运行环境及函数库请参考文档内的说明。当然,如果你并不熟悉STM32 MCU程序设计,这些代码看起来也许并没有很大的意义,请遵循见名知义的原则进行理解。
DSLOGIC与STM32F4-DISCO的连接
测评序列一 电平翻转信号测试
本测试中用到了STM32F4-DISCO上的定时器TIM2,系统时钟设置如下,HCLK为168MHZ,TIM2挂在APB1总线上,APB1的时钟总线为42MHZ,为HCLK的4分频,所以TIM2的工作频率为84MHZ。
TIM2初始化代码如下:
htim2.Instance = TIM2;
htim2.Init.Prescaler = 83;
htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
htim2.Init.Period = 9;
htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
HAL_TIM_Base_Init(&htim2);
这段代码的作用是产生周期为10US的精确定时,然后产生中断,在ISR例程里翻转电平信号。
DSVIEW设置及捕获的结果如下图,可以看到,捕获的结果非常精确。
测试序列二 PWM信号捕获测试
PWM信号在实现无级调光、电机驱动方面有很广泛的应用。
使用STM32F4-DISCO评估板上TIM1来产生2路互补PWM信号,即TIM1的CH1、CH1N,CH2、CH2N共计4路信号,没有插入死区时间。
TIM1挂在APB2总线上面,所以TIM1的时钟信号频率为168MHZ。
CH1的占空比设定为30%,CH2的占空比设定为60%,PWM频率均为1KHZ。下面是部分设定代码
htim1.Instance = TIM1;
htim1.Init.Prescaler = 167;
htim1.Init.CounterMode = TIM_COUNTERMODE_UP;
htim1.Init.Period = 999;
htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
htim1.Init.RepetitionCounter = 0;
HAL_TIM_Base_Init(&htim1);
sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
HAL_TIM_ConfigClockSource(&htim1, &sClockSourceConfig);
HAL_TIM_PWM_Init(&htim1);
sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig);
sBreakDeadTimeConfig.OffStateRunMode = TIM_OSSR_DISABLE;
sBreakDeadTimeConfig.OffStateIDLEMode = TIM_OSSI_DISABLE;
sBreakDeadTimeConfig.LockLevel = TIM_LOCKLEVEL_OFF;
sBreakDeadTimeConfig.DeadTime = 0;
sBreakDeadTimeConfig.BreakState = TIM_BREAK_DISABLE;
sBreakDeadTimeConfig.BreakPolarity = TIM_BREAKPOLARITY_HIGH;
sBreakDeadTimeConfig.AutomaticOutput = TIM_AUTOMATICOUTPUT_DISABLE;
HAL_TIMEx_ConfigBreakDeadTime(&htim1, &sBreakDeadTimeConfig);
sConfigOC.OCMode = TIM_OCMODE_PWM1;
sConfigOC.Pulse = 300;
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH;
sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET;
sConfigOC.OCNIdleState = TIM_OCNIDLESTATE_RESET;
HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_1);
sConfigOC.OCMode = TIM_OCMODE_PWM2;
sConfigOC.Pulse = 400;
HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_2);
将代码下载到开发板上,运行程序。
LA捕获得到的结果如下
TIM1定时器CH1与CH1N的逻辑信号,看到占空比为精确的30%。
TIM1定时器CH2与CH2N的PWM输出信号,使用的是PWM MOD2,占空比为精确的60%。
[!--empirenews.page--]
测试序列三 UART通信及解码
其实对于LA来说,通信协议分析才是它的强项。我们知道,各种电子设备或器件,彼此需要通过信号来进行信息交换,MCU与各外设之间也需要与使用相应的通信协议来进行通信。常见的通信协议有UART/USART、I2C、SPI、1-WIRE等,这些通信协议都是通过电平的高、低及转换,结合相应的时序信息来表示特定的数据。比如UART通信时,表示开始的信号就是一个高低电平转换,而结束信号则由一个低、高电平转换来完成。对于软、硬件工程师来说,这些通信信号是看不见、也摸不着的电子信号,所以要想观察这些信号是否正常,我们需要一个可视化设备来完成这个工作。示波器也能完成这个工作,但一般意义上的示波器只能观看到电平的高低及转换过程,时序信息也能看到。但面对众多的通信协议标准,到底一个信号表示什么意思,对工程师来说是很困难的!这个时候就是LA大显身手的时候了,因为LA一般都内置有特定的协议解码功能,只要告诉LA,这个信号是用什么协议实现,对应通道的具体功能,那么LA就能将一次通信过程完美的解码,并以非常人性化的方式呈现给用户。
DSLOGIC支持多达44种通信协议,受益于开源特性,这个数字还在继续增长中。
本次就UART做一个简单的解码测试,UART初始设置参数如下
huart2.Instance = USART2;
huart2.Init.BaudRate = 115200;
huart2.Init.WordLength = UART_WORDLENGTH_8B;
huart2.Init.StopBits = UART_STOPBITS_1;
huart2.Init.Parity = UART_PARITY_NONE;
huart2.Init.Mode = UART_MODE_TX_RX;
huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
huart2.Init.OverSampling = UART_OVERSAMPLING_16;
HAL_UART_Init(&huart2);
发送到电脑PC端的信息如下
HAL_UART_Transmit(&huart2, (uint8_t *)"Hello\r\n", 7, 100);
下面设置LA的解码,点击DSVIEW界面上的DECODER按钮,从可用的下拉列表中选择解码协议UART,点击旁边的+号,添加UART协议,此时弹出一个对话框,让用户设定UART参数,探头所使用的通道。这里只测试了TX发送功能,设置如下
点击OK按钮,完成参数的设置。
在正式开始测试UART协议解码功能之前,再说说触发器的功能及设置。
所谓触发器,指的是在采集信号的时候,只有当某个条件(如高、低电平或电平之间转换)的时候,才正式开始采集信号。这样,我们在采集信号的时候才不会手忙脚乱。DSVIEW的触发功能独树一帜,触发条件设置非常灵活。触发条件可以是简单形式,也可以使用高级模式。下图列出了高级触发模式的对话框设置。
该设置主要包括如下几个方面:
触发位置,从什么时候开始采集信号
分阶段触发,指定一系列的触发条件,可以组合各采集通道的状态来实现触发;也可以按先后条件来指定触发逻辑
总之,DSLOGIC的触发器设置非常灵活,可自由组合,实现一些高级的触发功能。
根据UART通信协议规定,UART起始位始于一个高低转换电平,所以如下图所示,我们将触发条件设置为下降沿,注意图中UART2_TX通道中黄色的触发条件设置。
图中上部列出来UART解码后的详细信息,可以看到我们发送的字符“Hello\r\n”,已经全部发送,解码是成功的。
事实上,DSLOGIC支持众多的通信协议解码,上面仅仅是冰山一角,更多的功能有待你进一步发掘!
小结
总体来说,DSLOGIC是一款非常优秀的产品。硬件基于Xilinx Spartan-6 FPGA+SDRAM的产品架构,可以提供高达400MHz的实时采样,50MHz的状态采样,16M*16通道的采样深度。16通道同时采样能达最高100MHZ的采样率,能保在证绝大多数情况下满足你的需求。16级组合式高级触发功能,轻松设定复杂的触发条件,让你在进行协议分析及解码时游刃有余。连续可调的电平阈值,大大降低了误判和采样毛刺产生的可能性。开源软件DSVIEW,支持高达44种通信协议的分析及解码,从此,信号不只是概念,它们更是可爱的精灵,在DSLOGIC的魔力之下,它们就是一组跳动的音符,在你创作的过程中,伴你一路前行!
作为一款新的产品,DSLOGIC也有一些需要改进的地方。一是官方文档比较少,这也许是技术类创业者的通病,他们更关注自己产品的性能,愿意花更多的时间在产品本身,而对于产品文档及周边的关注相对较少。例如触发器的高级设置中,初次上手者基本很难一次性设置成功,这时用户希望能有一些简单的教程或手册帮助他们快速上手。希望官方能逐渐完善产品文档,这样产品才会更加有竞争力!众多的产品使用者提出,DSLOGIC非常优秀,配套的附件特别是探头夹子,质量一般,不过这方面的影响并不是太大。再有就是上位机软件本身,可以改进的空间还很大。比如DSLOGIC最多支持16通道的数据采样,但是在DSVIEW上如果关闭部分通道的话,未关闭的通道结果也会占据着整个界面本身,这样显示的结果就不是那么和谐。同时DSVIEW软件本身也还有一些BUG,加上一些功能的设置不太人性化,这些都是需要改进的地方。随着产品慢慢完善,我相信,在测控仪器的天地,必将有DREAMSOURCELAB的一片天地!
国产、开源这些概念,到了今天也许已不能引起你太多的激情。毕竟像XX之类打着研发的幌子,骗取国人信任的情况让我们伤透了心。但从DSLOGIC上,我们再一次看到了希望,也许这只不过是燎原的一丝星火,青苹之末的一缕微风,但我们始终要相信:美好的事情正在发生。
星星之火,可以燎原;始于青苹之末的微风,也绝不会止于草莽之间!
参考资源
1. DREAMSOURCELAB官方主页:http://dreamsourcelab.com/index.html
2. KICKSTARTER众筹页面:https://www.kickstarter.com/projects/dreamsourcelab/dslogic-multifunction-instruments-for-everyone
3. DSVIEW软件下载: http://dreamsourcelab.com/download.html
4. Xilinx Spartan-6 FPGA产品文档:http://www.xilinx.com/support/documentation/data_sheets/ds162.pdf
5. 测试用代码包:链接:http://pan.baidu.com/s/1gdYSfsv 密码:g7im
——————本文系21ic原创,未经许可严禁转载——————