1.1 Verilog 教程

Verilog HDL(简称 Verilog )是一种硬件描述语言,用于数字电路的系统设计。可对算法级、门级、开关级等多种抽象设计层次进行建模。

Verilog 继承了 C 语言的多种操作符和结构,与另一种硬件描述语言 VHDL 相比,语法不是很严格,代码更加简洁,更容易上手。

Verilog 不仅定义了语法,还对语法结构都定义了清晰的仿真语义。因此,Verilog 编写的数字模型就能够使用 Verilog 仿真器进行验证。


谁适合阅读本教程

本教程主要针对 Verilog 初学者打造。

有一定 Verilog 基础的同学也可以对进阶篇、实例篇进行学习、交流。


阅读本教程前,你需要了解的知识

在学习本教程之前,你需要了解数字电路的一些基本信息。

如果你对 C 语言有一定的了解,有助于 Verilog 的快速上手。

第一个 Verilog 设计

4 位宽 10 进制计数器:

实例

cpp 复制代码
module counter10(
        //端口定义
        input                   rstn,   //复位端,低有效
        input                   clk,    //输入时钟
        output [3:0]    cnt,    //计数输出
        output                  cout);  //溢出位

        reg [3:0]               cnt_temp ;      //计数器寄存器
        always@(posedge clk or negedge rstn) begin
                if(! rstn)begin         //复位时,计时归0
                        cnt_temp        <= 4'b0 ;
                end
                else if (cnt_temp==4'd9) begin  //计时10个cycle时,计时归0
                        cnt_temp        <=4'b000;
                end
                else begin                                      //计时加1
                        cnt_temp        <= cnt_temp + 1'b1 ; 
                end
        end

        assign  cout = (cnt_temp==4'd9) ;       //输出周期位
        assign  cnt  = cnt_temp ;                       //输出实时计时器

endmodule

Cat Me

二当家的本人从事过 FPGA 设计、 IC 设计。学生时代用 VHDL 语言设计比较多,目前一直用 Verilog 和GO,PHP为方便查询语法,也为其他学者提供便利的学习通道,特意写此教程。需要说明的是:

  • (1) 教程内容是以自己曾经的学习角度进行撰写的,学习起来可能会容易些。其中有不妥之处还望指出,一起交流进步。
  • (2) 当用 Verilog 设计完成数字模块后进行仿真时,需要在外部添加激励,激励文件叫 testbench。有时 testbench 设计可能比数字模块本身都复杂。所以前面在介绍 Verilog 基本语法时,几乎没有仿真。后面介绍行为级和时序级相关知识时,会多用仿真说明。
希望你也学会了,更多编程源码模板请来二当家的素材网:https://www.erdangjiade.com
相关推荐
全栈开发圈27 分钟前
干货分享|深度学习计算的FPGA优化思路
人工智能·深度学习·fpga开发
尤老师FPGA9 小时前
LVDS系列40:Xilinx Ultrascale系 ADC LVDS接口参考方法(二)
fpga开发
松涛和鸣10 小时前
60、嵌入式定时器深度解析:EPIT与GPT
c语言·arm开发·单片机·嵌入式硬件·gpt·fpga开发
天骄t11 小时前
ARM时钟初始化与GPT定时器深度解析
stm32·单片机·fpga开发
乌恩大侠12 小时前
【AI-RAN 调研】软银株式会社通过全新 Transformer AI 将 5G AI-RAN 吞吐量提升 30%
人工智能·深度学习·5g·fpga开发·transformer·usrp·mimo
Terasic友晶科技1 天前
DE25-Nano开发板在Programmer的 Auto Detect 下检测出来的器件和友晶官方提供的工程里器件不一样有没有关系?
fpga开发·auto detect·de25-nano·jtag id
ShiMetaPi1 天前
GM-3568JHF丨ARM+FPGA异构开发板应用开发教程:04 MIPI屏幕检测案例
arm开发·fpga开发·rk3568
最遥远的瞬间2 天前
四、呼吸灯实战
fpga开发
FPGA小c鸡2 天前
FPGA高速收发器GTH完全指南:从零基础到10Gbps高速设计实战
fpga开发
乌恩大侠2 天前
【AI-RAN 调研】软银株式会社的 “AITRAS” 基于 Arm 架构的 NVIDIA 平台 实现 集中式与分布式 AI-RAN 架构
人工智能·分布式·fpga开发·架构·usrp·mimo