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

2.1.1. 本章导读

数字逻辑是芯片电路的基本组成部分。本次设计主要分析数字逻辑门在Robei软件中利用Verilog语言实现的方式,并通过该设计让参与者快速体验并掌握“图形化+代码”的新型设计模式。
理论分析
逻辑门是数字电路的基础,常见的数字电路逻辑门有与门,或门,非门,与非门,或非门和异或门等。本次设计重点讨论其中的几个逻辑门用Verilog在Robei软件中的设计和仿真。以常见的与门(图2-1-1)为例,如图2-1-1所示,通过其真值表可以看出,只有当两个输入同时为1的时候,输出才是1,其他情况下均为0。与门的数学表达式为:y=a&b。

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


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

在代码设计区内输入以下Verilog代码:
assign y = a & b;
该代码实现的是与门逻辑运算。如图2-1-7所示:

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

注意:

  1. 保存的路径中不能含有中文和空格
  2. 保存文件名不能以数字和特殊字符开头
  3. 相关的文件要保存在同一路径下
  4. 保存的文件名会显示成当前设计的模块名称
  5. 命名时不能命名成verilog的关键字,如“module”,“if” 等

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

2. 测试文件设计

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

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

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

(3)另存为测试文件。点击工具栏 图标,出现如图2-1-11的界面,将测试文件保存到andgate模型所在的文件夹下。
注意:
1.保存的路径中不能含有中文和空格
2. 保存文件名不能以数字和特殊字符开头
3. 必须保存到和andgate同一路径下,否则Toolbox中找不到andgate模块
4. 保存的文件名会显示成当前设计的模块名称

(4)加入模型。在Toolbox工具箱的Current栏里,会出现一个andgate模型,单击该模型并在andtest上添加。

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


(6)输入激励。点击测试模块下方的“Code”,输入激励算法。激励代码在结束的时候要用$finish 结束。
initial begin
p0 = 0;
p1 = 0;
#1
p0 = 1;
#1
p1 = 1;
#1
p0 = 0;
#1
p1 = 0;
#1
$finish;
end

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

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

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)我没有注册能不能仿真看波形?
可以。但是仿真的模块数目有限制。

实验实例 —逻辑门设计相关推荐

  1. [EDA]实验2A:设计M=12的计数器

    [EDA]实验2A:设计M=12的计数器 一.实验内容 用161计数器芯片,设计一个M=12的计数器 上电后,对CLK信号,从0顺序计数到11,然后回绕到0 当计数值为11的CLK周期,溢出信号OV输 ...

  2. 计算机图形学课程设计html源码,孔令德的计算机图形学实验及课程设计(VC++版)...

    [实例简介] 计算机图形学实验及课程设计,是太原工业学院孔令德教授编写的关于计算机图形学这门课程相关的18个实验及5个课程设计.案例由浅入深,具有很强的操作性和实际意义. 本资源给出实验的ppt课件以 ...

  3. Matlab图像处理创新实践-实验4【综合设计大实验——GUI综合设计】

    Matlab图像处理创新实践-实验1[图像滤波基础(1)] Matlab图像处理创新实践-实验2[图像滤波基础(2)] Matlab图像处理创新实践-实验3[图像锐化] Matlab图像处理创新实践- ...

  4. 2018-2019-1 《信息安全系统设计基础》 20165235 实验五 通信协议设计

    2018-2019-1 <信息安全系统设计基础> 20165235 实验五 通信协议设计 博客连接如下: 20165235 实验五 通信协议设计 转载于:https://www.cnblo ...

  5. 操作系统实验以及课程设计

    趁没人,当个小白来偷偷摸摸补一下操作系统的课程,羞 反正操作系统断断续续的看了一点了,主要是偏linux的.FreeBSD的实现,操作系统概念,30天自制操作系统等.Linux的话命令用的还行,没有很 ...

  6. python机器视觉教材_基于Python的机器视觉实验教学平台设计

    基于 Python 的机器视觉实验教学平台设计 韩志豪 ; 刘晓英 [期刊名称] <计算机测量与控制> [年 ( 卷 ), 期] 2020(028)003 [摘要] 针对机器视觉领域的学习 ...

  7. 商城小程序、实例原型设计、电商app、积分商城、领券中心、会员中心、每日签到、小程序电商、优惠券、移动端电商、Axure原型、rp原型、产品原型、积分、会员卡

    商城小程序.实例原型设计.电商app.积分商城.领券中心.会员中心.每日签到.小程序电商.优惠券.移动端电商.Axure原型.rp原型.产品原型.积分.会员卡 Axure演示及下载地址: Untitl ...

  8. java设计一个立方体类box_实例1: 设计一个立方体类Box,定义三个属性,分别是长,宽,高。定义二个方法,分别计算并输出立方体的体积和表面积。_学小易找答案...

    [填空题]表达式 list(filter(lambda x:x>2, [0,1,2,3,0,0])) 的值为 _________ . [填空题]表达式 len(' 中国 '.encode('ut ...

  9. 计算机硬件设计边界,基于JTAG的计算机硬件实验系统的设计与实现.pdf

    ■鲎坠型里型--塑堡型 基于JTAG的计算机硬件实验系统的设计与实现 12013) 肖铁军史顺波沈健(江苏大学计算机科学与通信工程学院江苏镇江2 摘要:介绍了一种利用自建ITAG边界扫描结构.基于FP ...

最新文章

  1. java.lang.IllegalArgumentException: Receiver not registered
  2. 行业网站设计策划书_怎么把金融行业网站设计排版做到符合用户体验?
  3. servlet会话技术
  4. python代码颜色不同_python – 两个不同颜色的颜色在同一个imshow matplotlib
  5. 声明式编程与函数式编程_实用程序类与函数式编程无关
  6. 计算机论文搜索技巧【一】
  7. WordPress 响应式全站 AJAX 主题:Beginning
  8. Java分布式服务框架Dubbo初探(待实践)
  9. 花了三个月终于把所有的 Python 库全部整理了!可以说很全面了
  10. wps忘保存关闭,数据恢复步骤
  11. 注塑模具设计的技术知识汇总
  12. 站内文章被百度收录的方法
  13. 城市记忆(3)灵州----灵武
  14. 真牛皮!wsl安装位置
  15. ADS1278字符驱动
  16. java在字符串开头添加字符串_string - java:使用StringBuilder在开头插入
  17. 复习javascript入门到精通
  18. 环形队列数组展示(韩顺平)
  19. Towards 3D Human Pose Estimation in the Wild: a Weakly-supervised Approach论文翻译
  20. 制作别踩白块网页小游戏

热门文章

  1. 苹果系统中英文输入法切换_Mac系统,如何优雅切换中英文?
  2. ios开发-分享一些免费的接口
  3. C语言中静态变量的概念和用法
  4. 数字PID控制算法原理及Matlab仿真
  5. 递推DP(至少和至多之间的转换
  6. Access Violation
  7. SWT的MessageBox对话框
  8. LDAP认证的两种方式
  9. 常见Linux系统下载站
  10. Jquery制作手风琴 -- 案例