前段时间自学了Verilog语言,故记录 CPLD语法学习语录
<1>assign用法
assign表示赋值操作,连续性,没有顺序性可言 a,b,c,d分别代表引脚高低电平module block(a,b,c,d) input a,b; a,b为输入 output c,d; c,d为输出
assign c= a | b; 连续赋值操作 assign d= a & b; endmodule
<2>always用法
always表示触发条件,模块内部语句是顺序执行的posedge 上升沿 posedge 下降沿
always @(posedge clk or posedge clr) /* clr clk 上升沿开始触发执行以下条件 */ begin if(clr) q <= 0; else if(en) q <= d; end
<3>数据类型及其常亮、变量
基本的数据类型:reg型、wire型、integer型、parameter型
(1)数字8’b10101100 位宽为8的数二进制表示
x代表不定值,z代表高阻值
4’b10x0 第二位表示位不定值 4’b101z 第一位表示位高阻值
parameter 参数型parameter msb=7
(2)变量wire型 wire [7:0] b; //定义了一个八位的wire型数据
reg型 reg [3:0] regb; //定义了一个四位的名为regb的reg型数据
wire对应于连续赋值,如assign reg对应于过程赋值,如always,initiamemory型 reg [7:0] mema[10:0]; /* 数组mema */
(3)运算符及表达式 算术运算符(+,-,×,/,%)赋值运算符(=,<=) 赋值运算都是等于,=:非阻塞赋值(立即赋值) <=:阻塞赋值(块语句执行完开始赋值)关系运算符(>,<,>=,<=)逻辑运算符(&&,||,!)条件运算符(??位运算符(,|,^,&,^)移位运算符(<<,>>)拼接运算符({ })<4>块语句
顺序执行块 begin *** /块语句执行/ end
<5>条件语句
if () ---- else if(表达式) —执行语句(也可以是执行块) *** else if() —
case(rega) x:—执行语句; y:—执行语句; default: —执行语句; endcase