SAST weekly verilog HDL简介

在进入verilog之前,先简单介绍一下FPGA开发板。FPGA是可编程逻辑器件的一种,它是作为专用集成电路领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。

之前有大佬介绍过的PYNQ板,就是一种基于Python语言进行编程的FPGA。然而Python常有而板子不常有,更多传统的FPGA所依赖的语言则是VHDL、verilog HDL等硬件描述语言。

Verilog HDL于1983年首创,由于具有简洁、高效、易用、功能强等特点,已逐渐为众多设计者爱好者接受和喜爱。主要具有如下特点:

1.Verilog HDL是在C语言的基础上发展而来的,就语法结构而言,Verilog HDL继承了C语言的很多语法结构,两者有许多相似之处。

2.既适于可综合的电路设计,也可胜任电路与系统的仿真。

3.能在多个层次上对所设计的系统加以描述,从开关级、门级、寄存器传输级(RTL)到行为级,都可以胜任,同时Verilog HDL不对设计规模施加任何限制。

4.灵活多样的电路描述风格,可进行行为描述,也可进行结构描述;支持混合建模,一个设计中的各个模块可以在不同的设计层次上建模和描述。

5.内置多种基本逻辑门,如and、or 和nand等,可方便地进行门级结构描述; 内置多种开关级元件,如pmos、nmos和cmos等,可进行开关级的建模。

6.用户定义原语(UDP)创建的灵活性。用户定义的原语既可以是组合逻辑,也可以是时序逻辑;通过编程语言接口(PLI) 机制可进一 步扩展Verilog HDL语言的描述能力。

Verilog和C语言有很多相似之处,因此比较容易上手。Verilog程序设计的基本单元是模块,一个模块有其特定结构,模块完全定义在module与 endmodule关键字之间,每个模块包括模块声明、端口定义、数据类型说明和逻辑功能描述等4个部分。

Verilog具有和C语言相似的数据类型、行为语句、宏替换等概念。需要注意的是,虽然所有的行为语句都可以在仿真器中使用,但有些语句是不可综合的,也就是说综合器无法把这些语句转化为对应的硬件电路。

关于Verilog的更多语法细节,在这里就不展开赘述,有兴趣的同学可以参考《数字系统设计与Verilog HDL》一书。

鲁迅说过,Verilog是用来用的,不是用来学的。这启示我们要从实践入手,才能更快地掌握这一语言。因此,下面给出一个简化的处理器取指令电路的设计,通过例子来体会Verilog的应用。

1.PC模块的设计和实现

PC模块的功能是给出取指令地址,同时每个时钟周期取指令地址递增。它的接口描述表如下所示:

主要代码如下:

2.指令存储器ROM的设计与实现

指令存储器ROM的作用是储存指令,并依据输入的地址,给出对应地址的指令。它的接口描述表如下所示:

主要代码如下:

3.顶层文件inst_fetch

顶层文件的目的是把PC模块和指令存储器ROM连接起来。它的接口描述表如下所示:

inst_fetch的主要代码如下,其中例化了PC模块、指令存储器ROM。

设计完成之后,可以通过仿真来检验代码的可靠性。这里介绍一款常用的verilog HDL软件Modelsim。

(下载链接http://www.xue51.com/soft/5275.html)

具体仿真流程在这里不再赘述,可以参考《自己动手写CPU》,里面有详细的介绍~

撰稿人:薛逸飞

审稿人:许璀杰

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181105G1VE5R00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券