Verilog基本代码结构及常用语句always、begin...end解读 |
您所在的位置:网站首页 › assign语句和always语句的用法 › Verilog基本代码结构及常用语句always、begin...end解读 |
verilog常用语句
1.1 基本代码结构1.2 简例1.2.1 简单的与或非运算1.2.2 线性反馈移位寄存器(此部分可在看懂always和begin后详细了解)
2.1 always 常用结构3.1 begin...end 用法解读3.2 简例
总结
在老板的要求下,我开始学习接触FPGA相关内容。而我们所用到的FPGA综合开发软件为vivado,虽然还没练习时长两年半,但也有一定的经验,接下来我把学习中遇到的问题记录如下,希望能帮助到刚入门的萌新。如果有一定的语言基础(例如c、matlab、Python等等),则搞懂以下问题,对于verilog语言的学习就会非常简单。
1.1 基本代码结构
在创建工程项目后,代码页面会自动生成如下语句(工程的创建及测试testbench等博主闲了再出教程敷衍大家) module csdn( //括号内为端口列表 ); //此处为I/O说明 //内部信号声明(也可理解为中间变量声明) //主要的代码功能定义 endmodule我们的代码内容写在module…endmodule中,对于括号内应进行输入输出端口的定义,该定义和测试testbench中相对应。 括号外则进行变量的声明及相关代码的撰写。(具体内容如下例1.2) 1.2 简例 1.2.1 简单的与或非运算 module csdn( input a, input b, output [5:0] y //此处定义三个端口,a,b为两个一位的输入端口,y为一个六位的输出端口 //未定义位数则自动按一位 ); assign y[0] = a & b; assign y[1] = ~(a & b); assign y[2] = a | b; assign y[3] = ~(a | b); assign y[4] = a ^ b; assign y[5] = a ~^ b; //此处assign声明语句 //此处为a,b的与 或 非 异或运算赋值到y的各个位中 endmodule此程序为我接触verilog语言学习的第一个程序,很适合新手去当做入门仿真的练习。接下来还有一个程序,则为我的项目所涉及到的部分代码,此程序更偏向于应用,且更符合第一部分介绍的基本代码结构 1.2.2 线性反馈移位寄存器(此部分可在看懂always和begin后详细了解)如下图,是为了方便讲解而手绘的简易六位线性反馈移位寄存器。其寄存器在每个时钟周期右移一位,即寄存器R0的1-5位移到2-6位,寄存器R0的第一位赋值为反馈值,该反馈值为寄存器第三位和第六位的异或值。其第六位在每个周期输出一次,该值记为code。其输入初值为L1C,该初值在程序开始时对寄存器R0进行赋值。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |