实验实例 —逻辑门设计

实例一 逻辑门设计(基于Robei的实验案例)

2.1.1. 本章导读

数字逻辑是芯片电路的基本组成部分。本次设计主要分析数字逻辑门在Robei软件中利用Verilog语言实现的方式,并通过该设计让参与者快速体验并掌握“图形化+代码”的新型设计模式。
理论分析
逻辑门是数字电路的基础,常见的数字电路逻辑门有与门,或门,非门,与非门,或非门和异或门等。本次设计重点讨论其中的几个逻辑门用Verilog在Robei软件中的设计和仿真。以常见的与门(图2-1-1)为例,如图2-1-1所示,通过其真值表可以看出,只有当两个输入同时为1的时候,输出才是1,其他情况下均为0。与门的数学表达式为:y=a&b。
实验实例 —逻辑门设计_第1张图片
软件准备
熟悉Robei软件。在Robei官方网站(http://www.robei.com)下载最新版Robei软件,并安装。打开Robei软件,熟悉Robei软件的结构和菜单。将鼠标放在工具栏的每个图标上查看图标所代表的内容。在下拉菜单中点击“Help”,查看Robei最新版用户使用说明书。

2.2.2. 设计流程

1. 模型设计
(1)新建一个模型。点击工具栏上的在这里插入图片描述图标,或者点击菜单“File”然后在下拉菜单中选择“New”,会有一个对话框弹出来(如图2-1-2所示)。在弹出的对话框中设置你所设计的模型。
图2-1-2所对应的每项分析如下:
实验实例 —逻辑门设计_第2张图片
图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所示:
实验实例 —逻辑门设计_第3张图片
图2-1-3 与门逻辑界面图
(2)修改模型。在自动生成的界面图上用鼠标选中输入引脚“p0”,右侧的属性编辑栏就会展示该引脚相对应的属性如图2-1-4所示。每条属性有其对应的名称。为了跟设计名称一致,我们把p0的名称改成a,p1的名称改成b,p2的名称改成y。修改的方法是在属性编辑器Name栏里面修改并点回车。为了区分每个引脚,我们可以修改每个引脚的Color值,并点回车保存。修改完成后如图2-1-5所示:
实验实例 —逻辑门设计_第4张图片
实验实例 —逻辑门设计_第5张图片
(3)输入算法。点击模型下方的Code(如图2-1-6所示)进入代码设计区。
实验实例 —逻辑门设计_第6张图片
在代码设计区内输入以下Verilog代码:
assign y = a & b;
该代码实现的是与门逻辑运算。如图2-1-7所示:
实验实例 —逻辑门设计_第7张图片
(4)保存。点击工具栏 在这里插入图片描述图标,或者点击菜单“File”中的下拉菜单“Saveas”,会出现如图2-1-8的界面,将模型另存到一个文件夹中。

注意:

  1. 保存的路径中不能含有中文和空格
  2. 保存文件名不能以数字和特殊字符开头
  3. 相关的文件要保存在同一路径下
  4. 保存的文件名会显示成当前设计的模块名称
  5. 命名时不能命名成verilog的关键字,如“module”,“if” 等
    实验实例 —逻辑门设计_第8张图片
    (5)运行。在工具栏点击在这里插入图片描述按钮或者点击菜单“Build”的下拉菜单“Run”,执行代码检查。如果有错误,会在输出窗口中显示,错误行数在code中显示的行中,可以通过修改该行或者上下行,错误行数不在code显示的范围中,需要修改界面。如果没有错误提示,恭喜你,模型andgate设计完成。
    实验实例 —逻辑门设计_第9张图片

2. 测试文件设计

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

注意:如果Module Type不设置成testbench,仿真将看不到波形。
实验实例 —逻辑门设计_第10张图片
(2)修改各个引脚的颜色。选中每个引脚,在属性栏中修改其颜色,方便区分不同的引脚信号,如图2-1-20所示。
实验实例 —逻辑门设计_第11张图片
(3)另存为测试文件。点击工具栏 在这里插入图片描述图标,出现如图2-1-11的界面,将测试文件保存到andgate模型所在的文件夹下。
注意:
1.保存的路径中不能含有中文和空格
2. 保存文件名不能以数字和特殊字符开头
3. 必须保存到和andgate同一路径下,否则Toolbox中找不到andgate模块
4. 保存的文件名会显示成当前设计的模块名称
实验实例 —逻辑门设计_第12张图片
(4)加入模型。在Toolbox工具箱的Current栏里,会出现一个andgate模型,单击该模型并在andtest上添加。
实验实例 —逻辑门设计_第13张图片
(5)连接引脚。点击工具栏中的在这里插入图片描述图标,或者选择菜单“Tool”中的“Connect”,连接引脚p0到a,p1到b和y到p2,如图2-1-13所示。这个时候,注意查看连接线的颜色。如果鼠标要变回选择模式,点击图标。
在这里插入图片描述

实验实例 —逻辑门设计_第14张图片
(6)输入激励。点击测试模块下方的“Code”,输入激励算法。激励代码在结束的时候要用$finish 结束。
initial begin
p0 = 0;
p1 = 0;
#1
p0 = 1;
#1
p1 = 1;
#1
p0 = 0;
#1
p1 = 0;
#1
$finish;
end
实验实例 —逻辑门设计_第15张图片
(7)执行仿真并查看波形。点击工具栏在这里插入图片描述,查看输出信息,检查没有错误之后点击在这里插入图片描述进行仿真,再点击在这里插入图片描述或者菜单“View”中的“Waveview”,波形查看器就会打开,如图2-1-15所示。如果顶层模块的“Module Type”不是 testbench,将不会看到波形。
实验实例 —逻辑门设计_第16张图片
(8)点击右侧Workspace中的信号,进行添加并查看。点击波形查看器工具栏上的图标在这里插入图片描述进行自动缩放。分析仿真结果并对照真值表,查看设计正确与否。
实验实例 —逻辑门设计_第17张图片
2.1.3. 问题与思考
本次案例中以与门作为例子进行设计,你如何经过简单改动,按照同样的方式来设计或门,非门和以或门并进行仿真验证?
实验实例 —逻辑门设计_第18张图片

2.1.4. 常见问题
(1)我为什么仿真之后看不到波形?
Robei的模型有四种类型:“module”,“model”,“testbench” 和“constrain”。 如果你想仿真之后看波形应该将顶层的仿真模块类型设置成“testbench”。同时,testbench的模块输入端口类型应为“reg”,输出类型应为“wire”。
(2)“model”和“module”有什么区别?
正在设计的模块叫做“module”,一旦设计完成,并把此模块应用到其它的设计模块的时候,该模块的类型自动变成“model”。“model”的一些属性不可更改,是被保护了的。
(3)怎么样看到模块的完整代码?
在“Code”中,你只能看到用户输入的代码部分,而且这些代码不是从第一行开始计数的。点击菜单“View”中的下拉菜单“CodeView”,你可以看到所有的代码,包括自动生成的。
(4)我没有注册能不能仿真看波形?
可以。但是仿真的模块数目有限制。

你可能感兴趣的:(Robei案例,Robei,FPGA,教育,高校,逻辑门设计,逻辑门案例,Robei,Robei案例,Robei教学)