项目/活动
电赛
商城
文档笔记
仿真/工具
参考设计
AI助手
发布项目
登录
/
注册
首页
>
文档笔记
>
工具
>
测试测量
Hackaday.io上的示波器项目-sdramThing4.5 "逻辑分析器"
收藏
分享
脑图
Hackaday.io上的示波器项目-sdramThing4.5 "逻辑分析器"
关于项目
项目简介:AVR、128MB SDRAM DIMM、旧笔记本电脑液晶屏和少量 TTL 芯片 -- 30+MS/s 32 通道逻辑分析仪接口,用于模拟"范围"
项目描述:这是一个采样/重复"逻辑分析器",每个通道最多有 32 个通道,每个通道的通道为 30+MS/s。采样后,数据重复,例如到示波器查看。采样数据的两个通道在 LCD 显示屏上以"rasta"(栅格)方式显示为红色和绿色。游标(蓝色)用于选择一个窗口进行重复,从而允许明亮的"范围"跟踪。** "sdramThing"* 通过将 SDRAM 的命令和地址信号连接到其数据信号,可以创建(我称之为)一个"自由运行的 SDRAM",可以在很少的 MCU 开销的情况下完成相当多的操作。sdramThing4.5 使得 SDRAM 能够以远远大于处理器的速度自由运行(面向 133MHz!一旦它加载了初始命令集,就可以与 MCU 物理断开连接并继续执行其操作。(请参阅"去处理器视频",其中我在 SDRAM 继续采样、重复和刷新 LCD 时将其处理器从插槽中取出!
项目作者:埃索特. 埃里克
项目图片
项目详情
什么是 sdramThing?
这个项目(sdramThing3.5,现在)实现了一个模拟示波器的逻辑分析器接口。
它通过高速采样数据,然后快速重复相同的数据,可以被视为模拟示波器上的明亮稳定轨迹。
目前,它以 20MS/s. 64MB 的 128MB SDRAM DIMM 进行采样和重复,专用于存储这些样本,并且能够同时采样/重复 32 位(每个输入 2MSamples)。其中两个通道在旧笔记本电脑显示屏上以红色和绿色输出。
光标用于仅选择和重复样本的有趣部分,在选定数据的开头触发示波器,然后重复所选样本几次。这种对短持续时间样本的背对背重复允许在"范围"上进行明亮的跟踪,即使在高"缩放"时。
此示例/重复过程通过 sdramThing 的"自由运行"模式成为可能。此模式利用SDRAM的同步性质,允许它控制自己。(有关更多详细信息,请参阅下文)。
正在进行中:
启发此项目的特定项目在 sdramThing3.0 的能力之外具有要求。我的数据源的时钟速率似乎为 25MHz,而 sdramThing3.0 的采样速率限制为 AVR 的时钟速率为 20MHz。
因此,我重新审视了利用SDRAM的能力,以比我的AVR快得多的速度运行(因此:SDramThing3.5)。
在一些工作的情况下,采样速度高达(并超过)SDRAM 的额定时钟速度为 133MHz (133MS/s),这是完全合理的。但目前,我很乐意以 40MS/s 的速度工作,因为我尝试将 SDRAM 时钟与 AVR 时钟分离,进展缓慢。
目前的状态,已经一段时间了:我已经设计和焊接了分离时钟所需的"一次"电路,但具有讽刺意味的是,它甚至没有与该电路在"旁路"模式下工作。我已经和这个战斗了一段时间了最后,我重新实现了 AVR 重新读取其写给 SDRAM 的数据的能力,因此也许我很快就会找到
详细信息(有点过时):
有关免费运行 SDRAM 和 sdramThing3.0 的信息,请单击此处。
由于我正在刷新我的记忆,它是如何工作的,以修复一些错误和改善功能,我可能会抛出一些相关的笔记在这里,无论是为;)
sdramThing3.0 在典型的 DIMM 上使用两组内存。"自由运行者"内存加载了所有命令,这些命令被反馈给两个设备的命令/地址输入。因此,SDRAM 实际上向自身发送命令,并且从外部控制(如 AVR)运行"自由"。
"侧踢"有两种模式:写入和读取,对应于"逻辑分析器的"示例和重复。
多路复用逻辑允许选择模式...自由运行者加载了用于侧踢的读取和写入命令。两个命令始终输出。该逻辑启用重复模式的读取命令,并启用采样模式的写入命令。因此,MCU 只需要根据需要切换相应的启用引脚,每个 *整个* SDRAM 的负载/重复不超过一次。自由运行器负责所有命令和计时,以持续循环浏览内存中的单个页面。
现在,有三种不同的反馈/自由运行命令:
将命令同时输入自由运行器和侧踢,而不考虑模式(示例与重复)。其中包括预充电和激活,用于关闭上一页并打开新页面。
每次发送到自由运行者的命令,但仅在处于"重复"模式时发送到侧踢。这些是"READ"命令,它们实际上将在下一页开始新的读取突发。
仅在"示例"模式下发送到侧踢的命令。这些是"WRITE"命令,它开始在侧踢的下一页写入突发。
数据掩码
SDRAM 的数据掩码引脚 (DQM) 用于通过 DQ(数据 I/O 引脚)读取*和* 写入数据。
请注意,首先,读取/写入命令是 *面向 *,因此发送"读取"命令地址 0 意味着在稍有延迟后,将输出地址 0 中的数据,然后是地址 1,然后是 2,直到地址 1023。同样,对于"写入"命令。
读取时:如果所选的 DQM 引脚对于时钟周期来说很高,则相应的数据(将在时钟周期或两个之后到达)是 *not* 输出。好吧,这是有道理的。它基本上是一个输出启用 (但由于芯片是同步的, 它稍微延迟) 。
写入时:如果所选的 DQM 引脚对于时钟周期来说很高,则在时钟周期期间驱动 DQ 引脚的数据将写入内存中的该位置...这样,可以运行"写入突发",最终写入该突发中的 *one* 位置。
sdramThing3.0 利用这一点...请注意,"C/A/BA"引脚(命令/地址/银行地址)直接连接到同一 SDRAM 芯片的数据引脚。
作品: sdramThing3.5 全速:
我发现,即使是20MS/s也不够快,无法监视电机驾驶员的数据。我认为它传输接近 25MHz 。
我从一开始就有计划(SdramThing1.0)尝试以全速运行SDRAM(133MHz=133MS/s)。
这样做已经放在后燃烧器上一段时间了, 但现在我又在想它了...sdramThing1.0 可能更适合一次电路,因为它不需要上述 DQM-strobing 方法的精度定时。
其理念是使用在 AVR 输出驱动下以 SDRAM 时钟速度运行的一次电路。我认为一切需要一枪的都是芯片选择和DQMs。 (研究全速/一枪是为什么我遇到需要提醒自己如何实现DQM)。
因此,如果处理器以 10MHz 运行,而 SDRAM 以 100MHz 运行,则每个处理器周期将对应于 10 个 SDRAM 周期...一次电路将在适当的引脚 (CS/DQM) 上查找适当的边缘,输出该值,然后在 *one* SDRAM 时钟后立即停用它(即使 AVR 的输出仍显示其为活动)。因此,上述 DQM 频闪方法将在 CS 频闪之后出现 50 个地址位置。我认为这是可能的,但是,再次,有一段时间,我真的明白这整个系统是如何工作的。此外,我记得,sdramThing3.0并没有真正考虑到一次电路的未来计划(这个想法在sdramThing1.0时代被研究了相当多)。
sdramThing3.5 正在工作中。一次电路经过设计和焊接。但目前只在"旁路"模式下工作,在软件上与 sdramThing3.0 相同。这种新电路仅在 DQM 和芯片选择启用引脚上位于 AVR 和 SDRAM 之间。
更新 3-14-15:
继续到 sdramThing4.0, 现在...真的, 3.5 应该叫 4, 但我想这是一个中间步骤。
这还是中间的,但布线又发生了改变,只是略有改变。
单枪显然不太实用。它们允许以相同的值连续写入两个字节。在时钟系统和门延迟 (?) 的某个地方, 似乎有一个输出在两个正时钟边缘期间处于活动状态...我猜*就在一个开始之前,在第二个结束之后(因此,它只比一个时钟宽度稍宽)。
修复...现在...因为它将每个值写入两个连续列,并且我不使用每个页面中的最后两列,因此只要* 每次写入连续发生(用正确的数据覆盖虚假数据,除了末尾未使用的列之外,随处可见), 这是可以的。
所以。。。我测试了它, 它似乎几乎工作。除了一个小故障写入蓝色数据(光标和状态栏)不会连续发生。像素可以在这里或那里写入,并且页面的其余部分不会被重写。因此,每次蓝色像素更改后,都可能会出现一列无效数据。此无效数据很可能发生在自由运行命令中。
所以。修复 (真的, 我考虑过这样做之前无论如何):
将蓝色数据完全放在不同的 SDRAM 芯片上。很简单 真的...Dimm 的好东西是粉笔里装满了芯片。
所以,是的,只要这个故障不固定,蓝色像素可能是双宽的。但这并不重要。
下面是 SDRAM DIMM 的引脚,以及我的一点布线方案...
请注意引脚 94 的更改,它曾经LCD_DVHB(这是数据启用、V 同步、H 同步和蓝色)。
这与自由运行命令在同一数据字节/芯片上。
现在,它已重新定位到引脚 95,这是一个单独的字节/芯片。
相同的 *命令* 写入该组 (/S0) ("自由运行者"),但 DQM 已分离。DQMB5 现在可以通过跳线连接到 DQM_AC(与 DQMB0、1 和 4 共享以自由运行),以便与旧配置相同地运行(以便与旧软件兼容)。或者,它可以跳线到DQM_DATA,使其 4.0 兼容。
项目文件
Micron SDRAM 芯片数据表
英特尔的 PC SDRAM 未缓冲 DIMM 规格修订版 1.0
项目组件
1X 微米 SDRAM 芯片数据表:MT48LC8M8A2
1X 英特尔的 PC SDRAM 未缓冲 DIMM 规格修订版 1.0
项目日志
SDRAM/DIMM 规格和 sTZ
如果你还没有看过, #sdramThingZero - 133ms / s 32位逻辑分析器几乎是新的项目...把 sdramThing 变成一个逻辑分析器外围设备, 连接到任何 "主机", 而不是整个系统本身...我打算保持它尽可能"透明",例如,只使用74xxx00系列芯片,这样它可以很容易地理解/复制,并实现在大多数任何主机(例如,树莓派通过Python,甚至准将64通过基本)。
因此,这可能是一个好地方,以获得任何新的信息,我提供如何使用SDRAM。(哦,@Benchoff,感谢,写博客!
我还在这两个项目的"文件"部分添加了两个"文件"资源...DIMM 引脚/布局以及 SDRAM 引脚/命令等。
单指令计算机 - "字节跳"
我还没有太彻底地研究细节,我认为这个想法是基本上实现任何指令,你想使用作为内存中的查找表。嗯,嘿,这里有一些记忆;)然后是关于跳跃的东西, 哪个 sdramThing 是 [真的] 擅长...
当然, 加载这些查找表完全是另一回事...FLASH 更有意义,但通常速度较慢和更小(以并行接口格式)。
我可能会重温这个好奇心...(事实上, 通过写这篇文章, 我已经重温了把 sdramThing 变成 Cpu 的想法...我隐约想到的一会儿...这里有一些东西表明, 它不仅是可能的, 但甚至以不同形式实现)
双像素思想
现在,我已经设法修复了一个相当体面的LCD显示器(#Ridiculous[LCD]显示黑客),已经死在我的收藏近十年...我感觉有点吝啬与 ol ' 15 英寸显示器在我的收藏...
所以我有一些想法...
其中一个15英寸是1024x768,与在sdramThing中使用的,除了它是双像素。
就 sdramthing 这是什么意思?
嗯,它可能很难看到,但它将允许可视化5个逻辑分析器的通道,而不是'n 2,在LCD上。
目前,只有两个通道可以"看到"在(单像素)液晶屏,"红色"和"绿色"。(不过,32个通道被采样和重复,而不管在液晶屏上可以看到什么。
为什么是两个?LCD 的"蓝色""通道"与 LCD 定时信号捆绑在一起,无论采样如何,都不应更改,因此"蓝色"不能与采样数据的显示完全(容易)捆绑在一起。不过这不是件坏事...它使该颜色/通道可用于其他目的,如光标...这是相当方便的。
这就是说...双像素显示屏允许 *5* 通道同时在 LCD 上查看...前面提到的前两个,"红色"和"绿色",将显示在第一,第三,第五,和其他"奇数"列...其余三个列将可见在第二、第四和其余"均匀"列中,以红色、绿色和蓝色显示。光标可以保留在奇数列中...
这是一个奇怪的概念, 但并不完全没用。奇怪:嗯,偶数和奇数的像素列将显示不同样本集,所有这些样本都是同时拍摄的。前两个通道的样本在一列,后三个在下一列...你可以想象,用这种方式看到一个特定的波形/模式会有多困难。哦, [看到] 这个 "拉斯塔" 显示的波形无论如何是困难的。这就是采样和重复背后的全部点(被送入示波器)。基本上,LCD 允许可视化是否有数据,并允许使用光标放大该数据(在示波器上)。
因此,它似乎有用,尽管很难看。考虑查看数据是多么困难...首先,事实是,与其在典型的____----_______________时尚中 ----显示波形,它们基本上显示为:*******。这已经够难看的了。还有一个事实, 红色和绿色通道是重叠的, 并采取行动, 大致, 就像他们是 "透明的"...当第一个通道为 1,第二个通道为 0 时,您将获得红色。当第一个通道为 0,第二个通道为 1 时,你得到绿色...当两者都是 1 时, 你会得到黄色。然后,更进一步:因为显示器是LVDS,它实际上是在每个像素上可视化*七个*样本...(对吗? 一定是...)而且,这不完全是...嗯, 它远远没有典型的期望, 一个人可能会合并七个数据样本到一个单一的像素...(典型的想法可能是:平均七个样本,并显示为亮度,或者:如果任何样本为 1,则将像素完全打开)。相反(我记得,稍微简化):它显示第一个样本作为该像素的颜色亮度的1/128,第二个样本作为1/64...该像素中显示的最后一个样本是 1/2 亮度,不是因为它比其他人更重要,而只是这就是它的工作方式。
因此, 考虑到这一切, LCD 基本上只是一种选择要放大的部分数据的手段...if/其中有数据要放大。所以, 那么, 也许双像素 (列对显示总共 5*7 个样本) 是有道理的...
(一个简单的选择,实际上,可能只是采取32个通道和或他们一起到两个在原来的单像素显示...嗯...)
不管怎样...这是一个沉思。另一个考虑, 虽然...在 1024x768(*7,是 LVDS,和*4,因为 SDRAM 的 32 位宽,从来没有想过显示器的"门廊"),我们接近我的 SDRAM 的单一银行("侧踢",用于采样/重复) 的限制。但。如果使用双像素,我们实际上会削减一半的样本数,我们可以显示一次...512 x 768(*7)。从图形上来说, 再次, 这不是一个大问题...无论如何,我们没有看到[每个]样本...
更大的问题是,[实施]这是一个时间问题...如果原始单像素设置在 LCD 上显示 2 秒的数据,则新的双像素设置将仅显示 1 秒的价值。
所以。。。我在考虑一些事情...我有一些想法。
当然,另一个问题就是使用"蓝色"作为数据通道*和*作为游标通道。在宏伟的计划的事情,假设你不太接近显示器实际看到每个单独的像素,光标将是50%的亮蓝色,或*不是*蓝色...替代像素上的采样数据永远不会超过 50% 的蓝色亮度, 无论是...因此,我认为,光标蓝色和数据蓝色之间应该有一些可见性/识别。
所以,快速集思广益...
我一直在考虑如何选择部分在 Lcd 上查看...从某种意义上说,液晶屏缩放。这一个将需要大量的黑客 sdramthing...到那个时候我们可能在 5.0 或 5.5...可能是一些额外的逻辑和/或多路复用器...但是,似乎有道理。我已经有[两个](三个?已经一段时间了) 完全不同的指令集同时存储在 "Freerunner", 为什么不添加更多的 LCD 缩放?可能。
另一种可能性: 我合作过的大多数 LCD 都不介意您继续发送当前行上的数据, 即使您已经通过其可显示行的末尾...这样,可以向显示器发送 *两个* 完整的"LCD-Rows"数据(并在"重复"模式下,发送到示波器),但只显示一个...所以,一些在视觉上丢失的数据,但仍传输为"最终缩放"上的"范围"。
大概有一吨的选择, 真的...不过, 我必须叫它一个晚上, 至少在这方面是这样。
暂停... = 奇怪的提醒 "为什么"
保持中...它发生...但如果不是坐在我工作台上的东西英寸从我的电脑,不稳定的手线PCB猫不断走,和一对夫妇提到/提醒从几个人在这里(@frankstripod和@PointyOintment我看着你!
但是,我忘记了*为什么*我重温了这个项目摆在首位...它坐在 v3.0 一年多, 我想...原封不动...之前, 我有理由使用它 (之前张贴在这里, 并工作的方式到 v4.5)...还有奇怪的部分..."为什么" 坐在它旁边的工作台上。猫经常在它周围走来走去。我必须不断提醒她不要把脸擦在脸上, 以免她的下巴上墨水。
所以,现在我正在工作 #operation: 学习 MIPS (PIC32),尝试端口 #commonCode (不是只为ARS)到 PIC32 系列 (和有相当多的困难, xc32-gcc 不喜欢 _commonCode 在所有, 即使 _commonCode 已经工作 *完美* 与许多 gcc 端口几年, 包括苹果的黑客版本在 10.5.8!...不管怎样...
通常发生(以及为什么我从来不标记项目"已完成"),在*完全无关的项目*(移植_commonCode到PIC32),我被引导搜索(和重新访问)所有项目*使用*_commonCode的最新版本。低和看: "oneAxisHolder" 使用最新版本的 _commonCode..."Wtf?我已经好几年没工作了?!(看看我的个人资料上的 "旧项目", 你会看到 "运动控制和乐高", 这是我的一个 AxisHolder 的原始测试床...3 - 4 年前) 。
等。。。为什么 oneaxisHolder 使用最新版本的 _commonCode?!那是几个月前才开发的...哦,是的!sdramThing 正在重新审视, 因为我正试图设置一个 2 轴运动控制系统与旧的喷墨打印机...我用一个斧头 (并添加了 Rs - 232 支持, 通过 bash 脚本移动其 "保持" 位置)...测试墨水滑车的直流电机/条状编码器系统...(并惊喜地发现它似乎是多么精确!但进纸轴由步进器控制,(当时)除了打印机的PCB上的一个,我没有任何步进驱动器。没有(公开)记录。所以。。。我计划使用 sdramThing 作为逻辑分析器来监视发送到步进电机控制器的 SPI 数据...
呼。
几个月后, 我想起了这个月, 不是坐在我的工作台上的四分五裂的打印机 (离我的鼠标不到两英尺), 我的猫不停地揉她的脸...但一个完全无关的项目。
嗯,那在 hold ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...斯德拉姆在保持...我完全忘记了* 之前 * sdramThing 的重访, 我修改 (和更新) "oneAxisHolder", 现在它碰巧是我收藏中最新的项目之一...(惊喜)...和很可能最好的例子之一,如何*实现*最新版本的_commonCode。
这个大脑...
爱因斯坦不是说"如果一张杂乱的桌子意味着杂乱无章的头脑,那么空桌子是什么意思呢?
当然,那个天才也说过这样的话:"精神错乱是反复做同样的事情,期待不同的结果",其中,我给[绝对最简单的]例子一个矛盾的陈词滥调:"实践使完美。
Btw: 几乎每个陈词滥调都有一个完全矛盾的...那不是牛顿的第三定律吗?
此外, 爱因斯坦的传记 (我无法通过, 因为坦率地说, 他是一个家伙) 基本上说, 他是一个可怕的家庭男人, 完全无视自己的孩子之一...然而, 他也被引用 (和反复如此) 说的东西, 基本上在生活中最重要的事情是家庭...(想知道他的 "不吉化" 的孩子的感受吗?也许传记的后页还有希望?
但是, 回到话题上...杂乱的桌子肯定在我的存在中...杂乱无章的一切,真的。杂乱无章的头脑, 绝对的。说真的,就在几个月前,我完全欣喜若狂,有人建议,线性编码器条可用于一些精确的电机定位,即使与一个相当简单的P+I+D算法,并发现它是精确足够多的目的。#PCB 10 美元以下的磨坊是初始灵感...不久之后, 在 "关于这些事情的博客上" 上发表了一些帖子和评论...我一心想让那个爆炸的打印机尸体作为 X - y 绘图仪运行, 以测试精度。
免得我感觉自己像个十足的白痴, 可能和爱因斯坦的鸡巴一样...我敢指出,我订阅了所有这些博客条目的评论部分,他们几乎立即到达nada,没有通过后,第一个星期或两个星期...有一些激烈(和聪明的)辩论在那里,其中一些,我承认,我参与,有些人实际上发现自己是[错了]关于...(什么?我是人?!但是,也许这并不重要,因为它似乎绝大多数人从来没有想过一个博客文章,甚至一个项目(当然不是评论)超过几天后,遇到它...(关于能够以不同的方式对项目进行分组的想法...?而且最明显地,他们甚至懒得看他们订阅的评论,当一个新的消息通过的东西,他们被[加热]约几个月前...一些, 甚至, 这么多, 所以他们甚至去他们的方式测试这样的事情, 并基于他们的新项目...喜欢。。。自己。或者,也许,像我一样,他们只是失去了跟踪的博客条目订阅,不记得在哪里评论与更新,和忙/分心的工作,任何(项目?
有利的一面是, 我的大多数项目, 如这里看到的, 互相喂食...更新_commonCode一个 [小] 示例...也许分形的缩小视图...然而,每一块是一个分形分支,往往他们重新审视和改善几个月/年后。放大和缩小两个最终收益时, 这非常好, 有利于两个视角(和中间的视角) 。
我觉得有一些"元视角",可以暗示与项目以外的事物有一些联系,但我不能完全绕在它周围。
兰德尔工程"袖珍逻辑分析仪"
所以, 在我的零件上挖...
我碰到过这个东西...(在标题中)
(也许我会上传一些图片, 也许我会做一个拆除...?
这是从一位老友的好友那里继承的, 他去世了...
从字面上看,设备本身的 *唯一* 信息是:
"袖珍逻辑分析仪"
"32 通道, 100MHz" (?! 100MHz?!
"兰德尔工程"
位数字的引脚 (1-32)
"Clk A" 和 "Clk B" 的引脚
里面没有丝网 ... ...只是 "兰德尔工程" 和 "1992 年", 所以我没有太多的去...哦, 还有, "慢" 这个词写在 *三个* 位置, 包括 * 两次 * 在 Fpga 上标记 - 125 (Mhz?! 1992?!
但我有一个稍微损坏的 3.5 英寸软盘!
我已经设法让应用程序"ana.exe"运行,有点,鼠标支持!
预发行版本:1995 年 2 月 4 日,21:31:31
我不确定, 但我有一种感觉, 我从可能继承下来的家伙一直在卡霍茨与这个 "兰德尔" 的家伙为 devel...
有一些保存的波形,但除此之外,我不能让设备通信。
无论如何, 正在我的新 Pic32s 工作, 但碰到了这个, 并得到了偏离 (和有点惊讶的 100mhz 实现在 1992 年与少数 Sram 额定为 25ns, 当我似乎不能实现更好的 'n 30mhz 与 Sdram)
......
评论
0 / 100
发表评论
查看更多
Sen
2020-08-21
1225
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
友情链接
STEP小脚丫
纳芯微电子
Copyright © 2024 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号