语法子集很小,易用。
模块:module…endmodule 端口:input,output,inout(双向特殊) inout比较难用,有一张真值表,需要大家观察后书写,基本原则就是输入时一定是高阻态(z),与问号冒号运算符搭配使用。 信号:wire,reg,tri(测试用)… reg与wire常用 运算符:与其他语言类似,逻辑运算与算数运算以及关系运算。 分支:if…else, case…default…endcase。 if…else其实在逻辑上与case差别不是很大,但是if…else天生带优先级。 赋值:assign与=以及<=(非阻塞赋值什么鬼?) 其中assign是连续赋值的语句,而=是阻塞赋值,<=是非阻塞赋值,其中非阻塞赋值在verilog中使用频率很高。=似乎在同步问题上比较有用。 always:与@连用,敏感信号量改变引起此模块执行。 always@(posedge [signal] [or negedge[signal]])。 begin…end就是作用域 任务:task…endtask 循环:for循环不是很好用,因为硬件的时序问题很重要,同步异步,自己体会能知。 参数:#与localparam。 都是可综合语法,大道从简。