本篇文章主要写了在Verilog环境下,FPGA基本语法和数据类型。
可以通过导航键快速进入assign语句、always语句等其他内容!
对于Verilog(FPGA):
module
... ==》构成主体
endmodule
module 模块名(【端口列表】);
【端口信号声明;】 <= 输入输出属性 数据类型 位宽 名称
【参数声明;】 <= parameter 数据类型 参数名=初值
注释:
· 模块名
· 端口列表指 电路的输入/输出信号,信号名由用户指定,中间用逗号隔开。
· 端口信号声明是要说明端口信号的输入输出属性,信号的数据类型,以及信号的位宽。
输入输出属性有 : input,output,inout(双向)
信号的数据类型常用的有: wire,reg
信号的位宽用[n1:n2]表示;同一信号之间用逗号隔开。
· 参数声明说明参数的名称和初值。
示例:
input [3:0] A,B;
input CIN; ===>位宽不说明默认是1位。数据类型不说明,默认是wire型。
output reg [3:0] S;
output COUT;
assign 语句 (后跟的是wire型 --- 信号型)
基本格式: assgin 赋值目标 = 表达式
例: assgin y = a; assgin y = a &b;
特点:之所以称为连续赋值语句是指其总是处于激活状态,只要表达式中的操作数有变化,立即进行计算和赋值。(与连续赋值语句对应的另一种语句称为过程赋值语句 --- always @)
注意:赋值目标必须是wire型,wire(电路)表示电路间的连线(硬件中的连线)
wire型的值由驱动它的逻辑决定,不能存储值。
对比:
reg(寄存器)型 ->always @ 在 always 块中,reg类型的变量用于表示状态或存储数据。
always语句块
基本格式: always @ (敏感信号条件列表)
...各类顺序语句
例: always @(posedge clk)
Q =D;
特点:赋值目标必须是reg型
只有满足信号条件才执行(两种) ----边沿敏感
----电平敏感
边沿敏感: (posedge 信号名) 信号上升沿到来
(negedge 信号名) 信号下降沿到来
电平敏感: (信号名列表) 信号列表中的任一个信号有变化
当(a,b,c)中有一个发生变化
举例:
边沿敏感: always @(posedge clk)
...
电平敏感: always @(D) -->变化执行 看D是否变化
Q = D;
其他:
RST 复位信号 (按下复位键) 寄存器清零
阻塞赋值 =
非阻塞赋值 <= (相当于同时进行)
对于端口信号来说,input信号和inout信号必须是net型(如:wire),output信号可以是net型可以是variable型(如:reg)的,决定于如何对其赋值。
Verilog <reg>中数字的表示格式
无符号的表示方法 <位宽>'<进制><数字>
例: 2'b00 -> (00)2 2表示进制
5'd8 -> (01000)2
有符号数的表示方法 <位宽>'<sb><数字>
例: 8'sb10111011 ->(-69)10
符号数是按照补码表示,即有效7位,第一位为符号位。
本篇关于FPGA(Verilog语言)的语句语法分享就到这里了,如果觉得文章还不错,请给我点个赞~~
如果有需要条件语句与循环语句的语法使用请留言,我将会补充。
ps:没有FPGA标签,我自己打一下,请谅解~
FPGA FPGA FPGA 嵌入式系统 嵌入式硬件 嵌入式系统 并行处理 并行处理 并行处理
标签:语句,wire,FPGA,always,Verilog,信号,赋值 From: https://blog.csdn.net/m0_73640343/article/details/142467612