cpld verilog语言学习

    xiaoxiao2021-04-16  226

    前段时间自学了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,initia

    memory型 reg [7:0] mema[10:0]; /* 数组mema */

    (3)运算符及表达式 算术运算符(+,-,×,/,%)赋值运算符(=,<=) 赋值运算都是等于,=:非阻塞赋值(立即赋值) <=:阻塞赋值(块语句执行完开始赋值)关系运算符(>,<,>=,<=)逻辑运算符(&&,||,!)条件运算符(??位运算符(,|,^,&,^)移位运算符(<<,>>)拼接运算符({ })

    <4>块语句

    顺序执行块 begin *** /块语句执行/ end

    <5>条件语句

    if () ---- else if(表达式) —执行语句(也可以是执行块) *** else if() —

    case(rega) x:—执行语句; y:—执行语句; default: —执行语句; endcase


    最新回复(0)