锆石FPGA---verlog语法篇
生活随笔
收集整理的这篇文章主要介绍了
锆石FPGA---verlog语法篇
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
Verilog HDL
概述
Verilog vs VHDL
Verilog :快速入门
VHDL:入门时间长
数字逻辑
0 1 x z
数据类型
寄存器 线网 参数
- 使用:always,initial
- 综合: 时序-寄存器 组合-硬件连线 混合-锁存器
- 默认为 z
运算符
±*/%
> < =
! && ||
== !=
a ? b: c<< >>
{ 拼接} {2’d2{b}}
基础语法
可综合语句:可以生成电路
不可综合语句:用来仿真
可综合关键字:
module end module
input output inout
wire reg parameter
always assign
if else begin end case end case default
posedge negedge or 上升 下降
基本框架
例实现与门
module yumen(a,b,c)input a;input b;output c;assign c=a&b;endmodule描述方式
分类:系统级、算法级、RTL级、门级、开关级
问题
- reg
- wire
- 产生情况:if else缺省
- 时序和组合区别
- 表达式左右具有相同元素
- 阻塞:顺序执行 非阻塞:并行执行
- 阻塞:同时改变 非阻塞:有时间延迟
状态机
- 可以实现顺序时间,第一步、第二部、、、
- Mealy
- Moore
- 时序逻辑:记忆当前状态
- 组合逻辑:次态逻辑(确定下一个状态),输出逻辑(确定状态机输出)
- 确定状态机类型
- 列出状态机所有状态,编码
- 列举状态图、状态表
- 描述状态
- 二进制码:编码效率高,译码
- 格雷码:高可靠性
- one-hot:位数资源多,每一位表示一种状态
- 一段:可读性差
- (二段):有毛刺
- (三段)
案例:自动售货机
module Example_State (X,Z,CLK_50M,RST_N );input X; input RST_N; input CLK_50M;output Z; //X表示是否投入一元 //Z是否售出饮料reg Z; reg Z_N;parameter S0=2'b00; parameter S1=2'b01; parameter S2=2'b10;reg[1:0] FSM_CS; //current reg[1:0] FSM_NS;//Next state//时序逻辑 always @(posedge CLK_50M or negedge RST_N) beginif(!RST_N)//lowFSM_CS<=S0;elseFSM_CS<=FSM_NS; end //组合逻辑(次态逻辑) always @(*) begincase(FSM_CS)S0:begin if(X==1'b1)FSM_NS=S1;elseFSM_NS=S0;endS1:begin if(X==1'b1)FSM_NS=S2;elseFSM_NS=S1;endS2:begin if(X==1'b1)FSM_NS=S0;elseFSM_NS=S2;endendcase end//组合逻辑(输出逻辑)always @(posedge CLK_50M or negedge RST_N) beginif(!RST_N)//lowZ<=1'b0;elseZ<=Z_N; endalways@ (*) beginif((FSM_CS==S2)&&(X==1'b1))Z_N=1'b1;elseZ_N=1'b0; endendmodule总结
以上是生活随笔为你收集整理的锆石FPGA---verlog语法篇的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 新能源汽车制造商Captain Tech
- 下一篇: Syntax Error: Error: