Verilog 如何将pos边缘写入脉冲创建为neg边缘脉冲?

Verilog 如何将pos边缘写入脉冲创建为neg边缘脉冲?,verilog,Verilog,我有一个数据源信号,当它有数据准备写入时,它会在时钟的正边缘高电平转换 我也有ram内存(从同一个时钟运行),但期望它的写请求信号在时钟的负边缘上转换(并保持高电平,直到下一个时钟的负边缘) 如果我尝试直接从数据源驱动内存的wr_-req,那么时钟和wr_-req都会同时转换,内存不会得到响应 数据 如何延迟写入脉冲,使其从时钟的下一个负边缘开始变高(一个周期?如果我理解正确,这应该满足您的要求: reg blah; always @(negedge clk) begin blah &l

我有一个数据源信号,当它有数据准备写入时,它会在时钟的正边缘高电平转换

我也有ram内存(从同一个时钟运行),但期望它的写请求信号在时钟的负边缘上转换(并保持高电平,直到下一个时钟的负边缘)

如果我尝试直接从数据源驱动内存的wr_-req,那么时钟和wr_-req都会同时转换,内存不会得到响应 数据


如何延迟写入脉冲,使其从时钟的下一个负边缘开始变高(一个周期?

如果我理解正确,这应该满足您的要求:

reg blah;
always @(negedge clk) begin
    blah <= !foo;
end
模拟:


如果我理解正确,这应该可以满足您的要求:

reg blah;
always @(negedge clk) begin
    blah <= !foo;
end
模拟:


一种可能的方法是打开写入,等待写入者的确认,然后关闭写入。一种可能的方法是打开写入,等待写入者的确认,然后关闭写入。潜在的竞争条件是否适用于Charles发布的两个版本?我试过并成功了,唯一的调整是foo是一个活跃的高信号,所以要在上面的模拟中创建类似于废话的东西,我必须删除废话的反转,然后执行:reg blah;分配最终的_wr_sig=blah&~blah_dly;总是(negedge clk)胡说八道,我不确定这里是否有比赛条件。特别是非阻塞赋值。如果有的话,我想知道更多的细节。潜在的竞争条件是否适用于查尔斯发布的两个版本?我试过并成功了,唯一的调整是foo是一个活跃的高信号,所以要在上面的模拟中创建类似于废话的东西,我必须删除废话的反转,然后执行:reg blah;分配最终的_wr_sig=blah&~blah_dly;总是(negedge clk)胡说八道,我不确定这里是否有比赛条件。特别是非阻塞赋值。如果有,我错过了,我会喜欢更多的细节