Verilog中非阻塞赋值会使数据延时一个clock的疑惑？ 20C
`````` `timescale 1ns/1ps
module freq ();
reg             clk_250     =   1'b0        ;
reg             rst         =   1'b1        ;
reg [6  :   0]  cnt         =   7'd0        ;
reg             valid       =   1'b0        ;
reg [2  :   0]  valid_cnt   =   3'd0        ;

parameter PERIOD_250 = 4 ;

//产生250MHZ时钟
initial
begin
clk_250 = 0;
forever #(PERIOD_250/2) clk_250 = ~clk_250;
end

initial
begin
#8  rst =   1'b0    ;
end

always  @   (   posedge clk_250 )
begin
if( rst ==  1)
cnt <=  8'b0000_0000    ;
else
begin
if( cnt ==  8'd100  )
cnt <=  8'd1    ;
else
cnt <=  cnt +   8'b1;
end
end

always  @   (   posedge clk_250 )
begin
if( rst ==  1'b1    )
valid_cnt   <=  3'd0                ;
else
begin
if( valid_cnt   ==  3'd6)
valid_cnt   <=  3'd1;
else
valid_cnt   <=  valid_cnt   +   3'd1;
end
end

always  @   (   posedge clk_250 )
begin
if( rst ==  1)
valid   <=  1'b0    ;
else
begin
if( valid_cnt   ==  1)
valid   <=  1'd1;
else
valid   <=  1'd0;
end
end
endmodule
``````

5个回答

2 年多之前 回复

cnt 、valid cnt和valid都是下一个时钟得出结果。

valid也是同样的，在valid cnt为1的时候，走的是valid <=1这条语句，但是下一个周期valid才会赋值为1。

cnt和valid-cnt都是宣告為序向邏輯, 所以這兩個訊後都是要等clk敲完下一個cycle才會產生

verilog结构描述方面的问题
Verilog结构描述and A1（S，A，～C），输入可以是～C吗，还是非得要调用一个非门

Verilog HDL 为什么会说数据流描述也是一种行为描述

Verilog 状态机代码编译不过问题在哪？
Verilog编写状态机的程序如下，始终有错误，求解决 module fsm(clk, button0, button1, UNLOCK); input button0,button1; output UNLOCK; //define state space parameter S0 = 2'b00; parameter S1 = 2'b01; parameter S2 = 2'b10; parameter S3 = 2'b11; //define clk reg clk = 0; always #50 clk = ~clk; //internal variable reg [1:0] current_state; reg [1:0] next_state; wire button0; wire button1; reg IN0 = button0; reg IN1 = button1; reg current_OUT0; reg current_OUT1; reg next_OUT0; reg next_OUT1; //transition always @(posedge clk) begin IN0 = button0; IN1 = button1; end always @(posedge IN0) begin current_OUT0 = next_OUT0; next_OUT0 <= 1'b1; #50 next_OUT0 <= 1'b0; zero = current_OUT0; end always @(posedge IN1) begin current_OUT1 = next_OUT1; next_OUT1 <= 1'b1; #50 next_OUT1 <= 1'b0; one = current_OUT1; end next_state = current_state; //next state decision always @(current_state) begin case(current_state) S0: begin if(button0) next_state <= S3; else next_state <= S0; end S1: begin if(button1) next_state = S0; else if(button0) next_state = S2; else next_state = S1; end S2: begin if(button1) next_state = S1; else if(button0) next_state = S3; else next_state = S2; end S3: begin if(button1) next_state = S0; else next_state = S3; end endcase end //action wire UNLOCK; assign UNLOCK = (current_state == S2) ? 1'b1 : 1'b0; endmodule 提示的错误是 Error (10170): Verilog HDL syntax error at try1.v(50) near text "="; expecting ".", or "(" Error (10112): Ignored design unit "fsm" at try1.v(1) due to previous errors 请问有人帮忙看一下吗

Verilog+niosⅡ 如何实现数字电子钟功能？
**1.**使用QuartusⅡ13.1，芯片是Cydone Ⅲ EP3C16Q240C8。 **2.**要求：从23-59-59开始显示； 时间可以通过按键更改； 实现时间的暂停、启动、停止功能； 实现闹钟的设置； 蜂鸣器响5s； 响的过程可以通过按键停止蜂鸣。 **3.**niosⅡ部分要实现CPU和电子钟定时功能； 用verilog HDL实现数码管的显示驱动和按键操作。

ise verilog 制作数字时钟，数码管引脚问题 signal is connected to multiple drivers

verilog语言关于memory的问题

verilog实现冒泡排序，大致的代码框架说明~~

verilog多次例化的module是并行执行的吗
Verilog初学者的有关always的一些问题，希望大佬们麻烦解决一下，谢谢

Verilog改错 testbench
testbench有几个问题比较雷同 但不知道为什么 都显示最后括号里的内容错了 ``` `timescale 1ns/1ps module count_test; reg clk; wire a,b,c,d,e,f,g; wire[1:0] outa; wire qout; wire LAMP; reg reset,load,cin,data,ud; count count (clk,a,b,c,d,e,f,g,qout,reset,load,cin,data,ud); initial begin clk=1'b0; reset=1'b1; cin=1'b0; data=1'b0; ud=1'b1; load=1'b1; #10 reset=1'b0; load=1'b0; always #10 clk=~clk; count( .clk(clk), .load(load), .reset(reset), .data(data), .cin(cin), .ud(ud), ); end endmodule ``` ** Error: C:/modeltech_10.1a/examples/test.v(21): near "always": syntax error, unexpected always ** Error: C:/modeltech_10.1a/examples/test.v(25): Named argument not allowed in verilog. ** Error: C:/modeltech_10.1a/examples/test.v(26): Named argument not allowed in verilog. ** Error: C:/modeltech_10.1a/examples/test.v(27): Named argument not allowed in verilog. ** Error: C:/modeltech_10.1a/examples/test.v(28): Named argument not allowed in verilog. ** Error: C:/modeltech_10.1a/examples/test.v(29): Named argument not allowed in verilog. ** Error: C:/modeltech_10.1a/examples/test.v(30): Named argument not allowed in verilog. ** Error: C:/modeltech_10.1a/examples/test.v(31): Empty argument not allowed in verilog.
VERILOG 5个数值比较大小，并且要找出其中相等的数值的位置。要怎么做呢？求思路
VERILOG 5个数值比较大小，并且要找出其中相等的数值的位置。要怎么做呢？求思路

《奇巧淫技》系列-python！！每天早上八点自动发送天气预报邮件到QQ邮箱

11月8日，由中国信息通信研究院、中国通信标准化协会、中国互联网协会、可信区块链推进计划联合主办，科技行者协办的2019可信区块链峰会将在北京悠唐皇冠假日酒店开幕。 　　区块链技术被认为是继蒸汽机、电力、互联网之后，下一代颠覆性的核心技术。如果说蒸汽机释放了人类的生产力，电力解决了人类基本的生活需求，互联网彻底改变了信息传递的方式，区块链作为构造信任的技术有重要的价值。 　　1...

C语言魔塔游戏

Android性能优化(4)：UI渲染机制以及优化

Python爬虫爬取淘宝，京东商品信息

Java工作4年来应聘要16K最后没要,细节如下。。。

SpringBoot2.x系列教程（三十六）SpringBoot之Tomcat配置
Spring Boot默认内嵌的Tomcat为Servlet容器，关于Tomcat的所有属性都在ServerProperties配置类中。同时，也可以实现一些接口来自定义内嵌Servlet容器和内嵌Tomcat等的配置。 关于此配置，网络上有大量的资料，但都是基于SpringBoot1.5.x版本，并不适合当前最新版本。本文将带大家了解一下最新版本的使用。 ServerProperties的部分源...
Python绘图，圣诞树，花，爱心 | Turtle篇

CPU对每个程序员来说，是个既熟悉又陌生的东西？ 如果你只知道CPU是中央处理器的话，那可能对你并没有什么用，那么作为程序员的我们，必须要搞懂的就是CPU这家伙是如何运行的，尤其要搞懂它里面的寄存器是怎么一回事，因为这将让你从底层明白程序的运行机制。 随我一起，来好好认识下CPU这货吧 把CPU掰开来看 对于CPU来说，我们首先就要搞明白它是怎么回事，也就是它的内部构造，当然，CPU那么牛的一个东...

2020年全新Java学习路线图，含配套视频，学完即为中级Java程序员！！

B 站上有哪些很好的学习资源?

Web播放器解决了在手机浏览器和PC浏览器上播放音视频数据的问题，让视音频内容可以不依赖用户安装App，就能进行播放以及在社交平台进行传播。在视频业务大数据平台中，播放数据的统计分析非常重要，所以Web播放器在使用过程中，需要对其内部的数据进行收集并上报至服务端，此时，就需要对发生在其内部的一些播放行为进行事件监听。 那么Web播放器事件监听是怎么实现的呢？ 01 监听事件明细表 名...
3万字总结，Mysql优化之精髓

HTML5适合的情人节礼物有纪念日期功能