Verilog基本代码结构及常用语句always、begin...end解读

您所在的位置:网站首页 assign语句和always语句的用法 Verilog基本代码结构及常用语句always、begin...end解读

Verilog基本代码结构及常用语句always、begin...end解读

2023-09-05 21:26| 来源: 网络整理| 查看: 265

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进行赋值。 手绘线性反馈移位寄存器简图 该线性反馈移位寄存器实现代码如下:(预告:接下来的程序测试testbench可能用这个程序来讲解)

module L1C( clk, work, l1c, code //端口列表 ); input clk; input work; input [5:0]l1c; output code; wire code; //I/O端口说明 //此处的input output也可以写到括号内,看个人习惯,我习惯括号内声明端口,然后再去对I/O进行具体的说明 reg [5:0]r0; //寄存器RO wire feedback; //反馈值 //中间变量定义 // ----------------------------------------------------------------------------------------------------- // ------------------------------Code Generator Part --------------------------------------------------- // ----------------------------------------------------------------------------------------------------- always @(posedge clk) //此语句用法下文会讲,在这里主要看代码的结构 begin if(!work) begin r0


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3