当你正在制作教程时,在这个过程中制作教程的全部原因变得非常明显,这难道不是一件很棒的事情吗?例如;试着建立一个项目这(一个7段显示解码项目),整个重点是分析数字逻辑信号,然后设置本身需要调试。

老鼠窝的照片在这里。
如果项目演示者在他们的头部空间和流线信息中感到非常舒服,那么遵循安装说明可能会很尴尬,而这些信息可能对读者来说并不明显。所以,当在链接项目中进行设置时(这确实非常酷),我不得不修改代码和电路,因为不同的部件可用性(大多数情况下,项目设置需要一个共阴极7段显示,而我只能访问一个共阳极7段显示)。
我的第一个问题是所提供的代码中的一个错误。没有什么疯狂的,只是在将代码示例从一本书转移到编译器或项目帖子时出现了一点拼写错误,以及忘记更改变量名。继续,代码编译,程序设备。然后是有趣的问题,在7段显示中没有显示。

现在,我进行故障排除的第一步是典型的:抓起一个数字万用表。这通常是我们学会使用的第一个测试仪器,它很快,也很简单。测量从FPGA的输出引脚给出了一个不稳定的值约1V。好吧,确实发生了一些事,但我怎么知道这是正确的事呢?我不喜欢。其次,有不止一个活动引脚,我不能用DMM测量它们。而且,我的显示器上还是什么都没有。检查晶体管的基极到发射极的电压显示大约600mV,所以它们大概是“打开”的。那么这中间发生了什么呢?为了缩小故障排除范围(双关语),我需要将问题隔离到代码或模拟电路中。
为了验证我从我的FPGA得到逻辑信号,我需要一个logic Analyzer,这样我就可以实时地看到所有的逻辑步进函数。我设置了我的数字的发现,Who的高速输入允许正确采样逻辑数据的能力(这对于在高时钟速度下运行的数字信号非常重要)。将数字示波器放在我在FPGA上使用的所有引脚上,我验证了FPGA上的所有引脚都肯定在发送信号。这大大减少了故障排除的工作量,因为我知道显示问题与模拟设置有关,而且我可以避免怀疑我正在使用的代码(特别是因为我没有编写代码,而且提供的代码是可操作的)。我不知道我已经浪费了多少时间在代码中查找根本不存在的问题!

原方案设计指定了小的缓冲/驱动电路串联,芯片和显示器作为一种功率驱动保护形式。芯片并不是真正用来驱动更高功率负载的,即使几个led可能不是一个巨大的功率负载,晶体管缓冲/驱动被实现为一个“好习惯”。很好。然而,由于没有信号通过这种方法,我只是绕过了这部分电路,最终看到了一个显示!

但这应该是一个计数器,显示数字。这些分段排列看起来不像我见过的任何数字。因此,我再次咨询了Logic Analyzer,但这一次我不仅仅是验证一个输出,我需要真正理解范围显示。

分析信号总线并观察显示,我意识到逻辑信号完全颠倒了。由于这个项目是用一个共阴极显示器建立的,而我使用的是一个共阳极显示器,LED段的开/关驱动是向后的。我看到了计数器上数字的形状在那些被关闭的部分,而那些应该关闭的部分是被照亮的部分。在代码中反转二进制赋值可以解决这个问题,并且显示项目可以完美地工作!

这个故事的寓意是:在调试电路时,使用一个范围,而且是正确的范围。我还应该研究一下缓冲电路的应用。最初的项目设计要求使用NPN BJT晶体管,但如果像我一样使用普通的阳极显示器,就需要使用PNPs,但显然当时没有搞清楚。请评论,如果你认为你知道什么模拟修改需要发生在普通阳极显示。谢谢,祝你scoping愉快!

对于一个普通的阳极显示,我将每个阴极连接到一个限流电阻,电阻的另一端到一个场效应晶体管的漏极,和场效应晶体管的源到地。然后,门可以连接到数字输出,高输出打开部分。
在数字逻辑工作中,fet比双极更容易工作,因为它们是电压控制的而不是电流控制的。您确实需要使用具有足够低阈值电压的设备。如果您正在运行一个5V系统,2N7000系列是一个很好的低价格的选择。如果您可以使用表面安装部件,那么像NX138AKR这样的设备可能是一个不错的选择(也适合3.3V逻辑)。
嗨GasStationWithoutPumps !谢谢你的反馈。我明白你所说的在BJT上使用FET,这听起来更合适,更容易在这种情况下使用。下次我设置类似的东西时,我将按照你的建议去做。感谢!
我还建议使用fet。栅电极上的电压很清楚地控制着电流的流动。在栅极电容器上充电会在栅极下面产生一个耗竭区域。因此,电流相应地流动。
教授你好!
感谢你的阅读。我完全“在船上”与使用fet为这个应用程序!谢谢你的建议。