购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.1 实例一
逻辑门设计

2.1.1 实例简介

数字逻辑是芯片电路的基本组成部分。本次设计主要分析数字逻辑门在Robei软件中利用Verilog语言实现的方式,并通过该设计让参与者快速体验并掌握“图形化+代码”的新型设计模式。

理论分析

逻辑门是数字电路的基础,常见的数字电路逻辑门有与门、或门、非门、与非门、或非门和异或门等。本次设计重点讨论其中的几个逻辑门采用Verilog语言在Robei软件中的设计和仿真方法。如图2-1-1所示以常见的与门为例,通过其真值表可以看出,只有当两个输入同时为1的时候,输出才是1,其他情况下均为0。与门的数学表达式为:y=a&b。

图2-1-1

软件准备

读者要使用Robei软件,先在Robei官方网站(http://www.robei.com)下载最新版Robei软件,并安装;打开Robei软件,熟悉Robei软件的结构和菜单;将鼠标放在工具栏的每个图标上查看图标所代表的内容;在下拉菜单中单击“Help”,查看Robei最新版用户使用说明书。

2.1.2 设计流程

1.模型设计

(1)新建一个模型。单击工具栏上的 图标,或者单击菜单“File”然后在下拉菜单中选择“New”,会有一个对话框弹出来。在弹出的对话框中设置所设计的模型。

图2-1-2所对应的每项分析如下。

Module Name:模块名称,这里我们想创建一个叫andgate的模块,输入andgate。

Module Type:模块类型,Robei目前支持3种类型,“module”,“testbench”和“constrain”。这里我们创建的是一个模块,选择“module”。

Language:设计语言,这里只有一种设计语言Verilog。

Input Ports:输入引脚数目,我们设计的模块有2个输入引脚a和b,所以输入2。

Output Ports:输出引脚数目,我们设计的模块只有1个输出引脚y,所以输入1。

Inout Ports:既可以作为输入又可以作为输出引脚的数目,我们设计的模块没有用到该类型引脚,所以输入0。

参数填写完成后单击“OK”按钮,Robei就会生成一个新的模块,名字就是andgate,如图2-1-3所示。

图2-1-2

图2-1-3

(2)修改模型。在自动生成的界面图上用鼠标选中输入引脚“p0”,右侧的属性编辑栏就会展示该引脚相对应的属性如图2-1-4所示。每条属性有其对应的名称。为了跟设计名称一致,我们把p0的名称改成a,p1的名称改成b,p2的名称改成y。修改的方法是在属性编辑器Name栏里面修改并回车。为了区分每个引脚,我们可以修改每个引脚的Color值,并回车保存。修改完成后如图2-1-5所示。

图2-1-4

图2-1-5

(3)输入算法。单击模型下方的 Code进入代码设计区,如图2-1-6所示。

在代码设计区内输入以下 Verilog代码:

该代码实现的是与门逻辑运算,如图2-1-7所示。

图2-1-6

图2-1-7

(4)保存。单击工具栏 图标,或者单击菜单“File”中的下拉菜单“Saveas”,会出现如图2-1-8的界面,将模型另存到一个文件夹中。

注意: ① 保存的路径中不能含有中文和空格;

② 保存文件名不能以数字和特殊字符开头;

③ 相关的文件要保存在同一路径下;

④ 保存的文件名会显示成当前设计的模块名称;

⑤ 命名时不能命名成verilog的关键字,如“module”,“if”等。

图2-1-8

(5)运行。在工具栏单击 按钮或者单击菜单“Build”的下拉菜单“Run”,执行代码检查。如果有错误,会在输出窗口中显示,错误行数在code显示的行中,可以通过修改该行或者上下行;错误行数不在code显示的范围中,需要修改界面。如果没有错误提示,恭喜你,模型andgate设计完成。

2.测试文件设计

(1)新建一个文件。单击工具栏上的 按钮图标,在弹出的对话框中参照图2-1-9进行设计。

注意: 如果Module Type不设置成testbench,仿真将看不到波形。

(2)修改各个引脚的颜色。选中每个引脚,在属性栏中修改其颜色,方便区分不同的引脚信号,如图2-1-10所示。

图2-1-9

图2-1-10

(3)另存为测试文件。单击工具栏 图标,出现如图2-1-11的界面,将测试文件保存到andgate模型所在的文件夹下。

图2-1-11

注意: ① 保存的路径中不能含有中文和空格;

② 保存文件名不能以数字和特殊字符开头;

③ 必须保存到和andgate同一路径下,否则Toolbox中找不到andgate模块;

④ 保存的文件名会显示成当前设计的模块名称。

(4)加入模型。在Toolbox工具箱的Current栏里,会出现一个andgate模型,单击该模型并在andtest上添加,如图2-1-12所示。

(5)连接引脚。单击工具栏中的 图标,或者选择菜单“Tool”中的“Connect”,连接引脚p0到a,p1到b,y到p2,如图2-1-13所示。这个时候,注意查看连接线的颜色。如果鼠标要变回选择模式,单击图标

图2-1-12

图2-1-13

(6)输入激励。单击测试模块下方的“Code”,输入激励算法。激励代码在结束的时候要用$finish 结束,界面如图2-1-14所示。

图2-1-14

(7)执行仿真并查看波形。单击工具栏 ,查看输出信息,检查没有错误之后单击 ,或者单击菜单“View”中的“Waveview”。波形查看器就会打开,如图2-1-15所示。如果顶层模块的“Module Type”不是 testbench,将不会看到波形。

图2-1-15

(8)单击右侧Workspace中的信号,进行添加并查看。单击波形查看器工具栏上的 图标进行自动缩放。分析仿真结果并对照真值表,查看设计正确与否,如图2-1-16所示。

图2-1-16

2.1.3 问题与思考

本次案例中以与门作为例子进行设计,那么如何经过简单改动,按照同样的方式来设计或门、非门和异或门,并进行仿真验证?

2.1.4 常见问题

(1)为什么在仿真之后看不到波形?

Robei的模型有四种类型:“module”、“model”、“testbench”和“constrain”。如果要在仿真之后观察波形,应该将顶层的仿真模块类型设置成“testbench”。同时,testbench的模块输入端口类型应为“reg”,输出类型应为“wire”。

(2)“model”和“module”有什么区别?

正在设计的模块叫做“module”,一旦设计完成,并把此模块应用到其他设计模块时,该模块的类型自动变成“model”。“model”的一些属性不可更改,是被保护了的。

(3)怎样看到模块的完整代码?

在“Code”中,只能看到用户输入的代码部分,而且这些代码不是从第一行开始计数的。单击菜单“View”中的下拉菜单“CodeView”,可以看到所有的代码,包括自动生成的。

(4)如果没有注册能不能仿真看波形?

可以,但是仿真的模块数目是有限制的。 HVdcOpwfbAkpV1nA7HumkJUVJBSro146fZiWLMSrU95dQZYKhI/0SnaznqNALZPi

点击中间区域
呼出菜单
上一章
目录
下一章
×