- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
此代码是一个按钮防抖器。但我不明白为什么有两个人字拖:
reg PB_sync_0; always @(posedge clk) PB_sync_0 <= ~PB; // invert PB to make PB_sync_0 active high
reg PB_sync_1; always @(posedge clk) PB_sync_1 <= PB_sync_0;
为什么这段代码的作者没有写这个?
reg PB_sync_1; always @(posedge clk) PB_sync_1 <= ~PB;
完整代码如下:
module PushButton_Debouncer(
input clk,
input PB, // "PB" is the glitchy, asynchronous to clk, active low push-button signal
// from which we make three outputs, all synchronous to the clock
output reg PB_state, // 1 as long as the push-button is active (down)
output PB_down, // 1 for one clock cycle when the push-button goes down (i.e. just pushed)
output PB_up // 1 for one clock cycle when the push-button goes up (i.e. just released)
);
// First use two flip-flops to synchronize the PB signal the "clk" clock domain
reg PB_sync_0; always @(posedge clk) PB_sync_0 <= ~PB; // invert PB to make PB_sync_0 active high
reg PB_sync_1; always @(posedge clk) PB_sync_1 <= PB_sync_0;
// Next declare a 16-bits counter
reg [15:0] PB_cnt;
// When the push-button is pushed or released, we increment the counter
// The counter has to be maxed out before we decide that the push-button state has changed
wire PB_idle = (PB_state==PB_sync_1);
wire PB_cnt_max = &PB_cnt; // true when all bits of PB_cnt are 1's
always @(posedge clk)
if(PB_idle)
PB_cnt <= 0; // nothing's going on
else
begin
PB_cnt <= PB_cnt + 16'd1; // something's going on, increment the counter
if(PB_cnt_max) PB_state <= ~PB_state; // if the counter is maxed out, PB changed!
end
assign PB_down = ~PB_idle & PB_cnt_max & ~PB_state;
assign PB_up = ~PB_idle & PB_cnt_max & PB_state;
endmodule
谢谢!
最佳答案
该代码的作者使用 2 个触发器来将 PB 信号同步到 clk 域。正如他在评论中提到的"PB" is the glitchy, asynchronous to clk
。不同步时钟域转换上的信号可能会导致系统出现亚稳态,如工具引用 en.wikipedia.org/wiki/Metastability_in_electronics
关于verilog - 为什么在此 Verilog HDL 代码中使用两个触发器而不是一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24660371/
关闭。这个问题是not reproducible or was caused by typos .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 去年关闭。
你可能知道 Verilog 中的“output reg”,非常有用的功能。 但在 Chisel 中我找不到如何做类似的事情。当我需要寄存器输出时,我应该这样做: package filter impo
你可能知道 Verilog 中的“output reg”,非常有用的功能。 但在 Chisel 中我找不到如何做类似的事情。当我需要寄存器输出时,我应该这样做: package filter impo
我总是使用默认分配来构建我的设计,因为它使我的代码行数更少并且我认为更具可读性。但是,我了解到默认分配有时会很麻烦。如果没有足够的设计空间,工具(Vivado、ISE)可以移除那部分。我的意思是默认赋
我一直有点想制作自己的微处理器..我读过 How can I make my own microcontroller? . 我多次尝试学习一些 Verilog 和 VHDL。但对于我的一生来说,我就是
大家,只是一个关于如何修复以下 Verilog 代码的简单问题,我不断收到错误。有什么建议吗? module bcd_to_seven_seg( B, S); input wire [3:0]B; o
我是一名自学成才的嵌入式开发人员。我主要使用用 C 和 ASM 编程的 AVR,但我也涉足过其他系统。我希望转向更复杂的设备,如 CPLD 和 FPGA,但我不知道从哪里开始。所以我的一个半问题是:
Chisel3 HDL语言是否可以进行形式验证? 如果是,是否有开源软件可以做到这一点? 我知道我们可以使用 Yosys 进行 verilog 形式验证,但是使用 chisel ? 最佳答案 Spac
如何在 HDL 中使用数组(代表总线)? 例如,我有以下代码: /** * 16-bit bitwise And: * for i = 0..15: out[i] = (a[i] and b[i]
我有 2 个模块使用相同的时钟但在不同的文件中,当我在模块 B 中采样来自模块 A 的信号时,在波形仿真中它没有像它应该的那样在一个时钟周期后获得样本,它表明是同一上升沿的样本(适合异步实例化的行为)
我找到了两个不同的来源,它们以两种不同的方式解释了 Verilog HDL 中的惯性延迟。 1) 第一个表示任何短于指定延迟的输入信号都将被忽略。 2) 第二个表示,如果其中一个输入发生变化,输出信号
这是我运行的代码,它不生成输出 HDL 文件: from pygears import gear from pygears.typing import Ufixp, Uint from pygears
假设您正在实现一个带有 cpu、ram、rom 和 mmu 的简单 SoC,以将 ram 和 rom 映射到 cpu 的地址空间。在实例化不同的组件时,这样做会更有意义: ram 和 rom 在 mm
此代码是一个按钮防抖器。但我不明白为什么有两个人字拖: reg PB_sync_0; always @(posedge clk) PB_sync_0 <= ~PB; // invert PB to
看起来快要工作了,只是在第 7 行显然搞砸了? /** * 4-way demultiplexor. * {a,b,c,d} = {in,0,0,0} if sel==00 *
也许这很简单,但我不能简单地找到如何在 Chisel 中获取 UInt() 值的位大小? 我知道如何通过声明设置尺寸: val a = UInt(INPUT, 16) 但是要获得“a”大小,是否有类似
该项目旨在构建一个程序计数器。 具体说明如下: // This file is part of www.nand2tetris.org // and the book "The Elements of
这是一个受此问答对启发的问题:call questa sim commands from SystemVerilog test bench 这些问题询问 Verilog 代码如何控制执行模拟器 (Qu
always 关键字(不是 always @ block )和 之间有什么区别Verilog HDL 中的forever 关键字? always #1 a=!a; forever #1 a=!a; 这
我使用 vi 作为编辑器在 Verilog 中编写了一个模块,现在我想测试它。如果我没有董事会,我有什么选择?我怎样才能给我的模块输入?我在哪里可以看到结果?顺便说一下,我可以访问 VCS。 谢谢。
我是一名优秀的程序员,十分优秀!