问题标签 [shift-register]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
397 浏览

.net - 数组的滑动窗口(移位)

我有一个低级键盘钩子,目前允许我从任何应用程序(包括游戏)内部控制媒体播放器。

它通过查看捕获的特定击键来工作。

我想扩展它来寻找键的组合。我可以硬编码一些逻辑,但我觉得必须有一种更合乎逻辑的方式。

真的,我正在寻找类似移位寄存器的东西......

例如,当我输入“BlahPlay”时,我想要一个可以像这样使用的结构......

缺少循环和移动数组中的项目,这样做的正确方法是什么?

我现在能想到的最好的就是……

0 投票
2 回答
2163 浏览

templates - 尝试在 Arduino 中使用模板而不是重载函数:类型未在此范围中声明

我正在尝试编写一个可以将数据移出到 74HC595 移位寄存器的函数,该移位寄存器可以移出 8、16 和 32 位值。

使用重载函数,我有这个:

我想用这个模板来替换这些功能:

当我编译时,我收到以下错误:

我究竟做错了什么?

0 投票
1 回答
2815 浏览

vector - VHDL中std_logic_vector的移位寄存器

有人可以告诉我,如何制作 12 位 std_logic_vector 项的移位寄存器?

0 投票
1 回答
199 浏览

verilog - 移位寄存器,可以一次移位几个位位置,也就是每个时钟周期

你们有谁知道是否有这样的移位寄存器拓扑可以满足我在标题中所述的要求?

例如,

100101 在一个 clk 周期内左移 3 位位置:

100101 -> 101000

如果有,请告诉我名字,以便我做更深入的研究。如果可能的话,还有model/objectverilog HDL中的名称。

有什么建议么 ?

0 投票
1 回答
716 浏览

verilog - 初始化移位寄存器

我为移位寄存器制作了一个模块,并试图通过变量值对其进行初始化。但它不工作

这是代码

0 投票
1 回答
564 浏览

synchronization - Verilog 移位寄存器接口到 AVR

一般来说,我对 Verilog 和 HDL 很陌生。我最近购买了一个 Mojo FPGA (Spartan 6) 开发板并一直在使用它。

我感兴趣的一个概念是移位寄存器,特别是,将 ATmega 连接到 FPGA 以在 FPGA 上加载移位寄存器。我有这个与这个 Verilog 之间的工作:

这真的很简单,当 sshift_en 为 1 时,它在时钟的上升沿 (50 MHz) 移入数据。 sshift_en 是与 sshift 的当前值和触发器 sshift_FF 的输出的互补的结果(即它检查上升沿)。

我真正的问题是:这是一个好的/正确的方法吗? 我已经对在 Verilog 中实现移位寄存器进行了大量研究,我的概念基本上是相同的,只是我希望移位寄存器的“移位”信号由 AVR 指示(运行速度比 50 MHz 时钟慢得多) FPGA)而不是时钟信号(就像我见过的所有例子一样)。

如果我需要在此处提供有关任何内容的更多信息,请告诉我。

先感谢您!

编辑: 我修改了代码以包含同步部分:

0 投票
1 回答
1432 浏览

verilog - 如何在没有时钟的情况下生成上升沿来控制verilog中的移位寄存器?

首先,让我解释一下我要做什么。我正在使用具有四个七段显示器的 DE0。我的目标是生成一个在显示器上滚动的文本字符串,并且文本字符串基于用户输入。用户有三个按钮,分别对应 A、B 和 C。

我已经能够创建一个在七段显示器上显示文本的“循环”,但我在获取用户输入时遇到了困难。我的想法是使用一个 9 位移位寄存器,它可以接受用户输入并将过去的输入沿链向下移动。

请不要说我对 verilog 很陌生,而且我仍在试图弄清楚在编写代码时如何最好地考虑它。到目前为止,我发现最好在物理硬件方面对其进行可视化。

也就是说,这就是我正在想象的:

新输入 => Flip-Flop1 => FF2 => FF3 => FF4 => FF5 => FF6 => FF7 => FF8 => 丢弃旧输入

使用这个想法,我编写了以下代码:

然后我写了一个模块来检测change寄存器的输入:

这就是我遇到问题的地方。我可以按下一个按钮,但第一个寄存器中的更改将通过链传播。显然,这是因为所有八个寄存器都绑定到同一个时钟。这个时钟以 50mHz 的频率运行,所以它似乎是立即发生的。这就是为什么我通过一个柜台module FF来确认我的怀疑。

为了解决这个问题,我尝试在always块中添加一个位“更新”,以尝试在每个输入处创建一个正边缘,但这不起作用。

例如:

我也会相应地更改模块实例。如果我将此块更改为非阻塞分配也是如此。

我怀疑这个问题有一个非常简单的解决方案。基本上,我想要的就是有这个效果

字符串初始化:_ _ _ _ _ ...

输入:A _ _ _ _ ...

下一个输入:BA _ _ _ ...

代替

输入: AAAA ...

下一个输入:BBBBB ...

任何建设性的意见表示赞赏。

0 投票
1 回答
3510 浏览

arduino - Arduino:多路复用 7 段显示问题

我有一个 3.5 位 7 段 LED 显示屏,我正在尝试用 Arduino 驱动它。Arduino 运行带锁存器的移位寄存器 (M74HC595)。移位寄存器的 8 个输出通过 2000 欧姆电阻进入显示器的 8 个段引脚。显示器的三位控制引脚连接到 Arduino 上的三个引脚。显示器有一个共阴极,所以当控制引脚为低电平时,数字打开,当它为高电平时,数字关闭。

只要我只点亮一个数字,或者用相同的段点亮多个数字,这就可以正常工作,但是一旦我尝试在两位或三位数字之间切换段,一切都会变得一团糟。不应该有光的部分,而是有一个微弱的光,这会影响读取实际数字。

如果我在写入每个数字之间添加延迟,不需要的灯会变暗一些,但很快整个事情就会因为高延迟而闪烁并且无法使用。

难道我做错了什么?

为了启用特定数字,我在 Arduino 上设置了控制引脚,例如,这是我启用第一个数字的方式:

然后将一个数字推入移位寄存器并将其移至锁存器(因此移至显示器):

这是我的方案:

方案

0 投票
3 回答
348 浏览

vhdl - 移位寄存器使用了太多的逻辑元素

我已经在 VHDL 中实现了一个移位寄存器。它使用“BITS”作为参数,能够将用户定义的数字向右移动。它按预期工作,但根据 Quartus II 中的 Compilation Report 占用 164 个逻辑元素。谁能告诉我为什么我的代码如此糟糕,也许给我一两个提示来优化它?:) 先感谢您。

0 投票
2 回答
8545 浏览

crc - 了解使用 LFSR 实现 CRC 生成的两种不同方法

有两种使用线性反馈移位寄存器 (LFSR) 生成 CRC 的方法,如图所示CRC LFSR。图中生成多项式的系数为 100111,红色“+”圈为异或运算符。两者的初始化寄存器值都是 00000。

例如,如果输入数据比特流是 10010011,则 A 和 B 都会给出 1010 的 CRC 校验和。不同之处在于 A 完成 8 次移位,而 B 完成 8+5=13 次移位,因为输入附加了 5 个零数据。我可以很容易地理解 B,因为它非常模仿模 2 除法。但是,我无法从数学上理解 A 如何在减少 5 次班次的情况下给出相同的结果。我听说人们在谈论 A 利用了预先附加的零,但我没听懂。谁能给我解释一下?谢谢!