数字集成电路及其版图设计

带有预置数功能的8位二进制加减计数器设计及版图实现

一、目的:

1、熟悉数字集成电路设计的基本流程;
2、熟悉虚拟机的安装及使用方法;
3、熟悉Linux系统及vi编辑器的操作;
4、熟悉Quartus II、Design Compiler、Encounter设计软件的使用方法。

二、原理:

1、设计原理:计数器是最常用的寄存器逻辑电路,从微处理器的地址发生器到频率计都需要用到计数器。一般的计数器可分为两大类:加法计数器和减法计数器。加法计数器每来一个脉冲计数值加1;减法计数器则减1。

2、要求:用Verilog HDL语言设计一个带有预置数功能的8位二进制加减计数器。电路包括一个时钟输入端clk,一个异步清除输入端clr,一个同步预置位控制输入load,1个8位预置数据输入端d[7:0],一个加减控制输入端updown,1个8位计数输出端q[7:0],一个进位输出端rc。此次任务是利用数字集成电路的设计方法进行N位二进制加法/减法/加减计数器的电路设计及版图实现。

三、步骤及结果:

1、行为设计及行为仿真

1)运行Quartus II,选择File>New Project Wizard,新建一个工程,FPGA芯片在Available device 列表中选择EP2C35F672C8:

2)按照设计要求,在新建的HDL文件中编写程序:带有预置数功能的8位二进制加减计数器,电路包括一个时钟输入端clk,一个异步清除输入端clr,一个同步预置位控制输入load,1个8位预置数据输入端d[7:0],一个加减控制输入端updown,1个8位计数输出端q[7:0],一个进位输出端rc,最终程序如下:

module LiTianhao(q,clk,load,d,reset,updown,RC);
output [7:0] q;
output RC;
input [7:0] d;
input clk,reset,load,updown;
reg [7:0] q;
reg RC;
wire clr;
always @(posedge clk)
begin
RC<=0;
q<=8'b0;if(reset) begin         q<=8'b0;endelse beginif(load) beginq<=d;end else if(load==0&updown==0) begin         q<=q+1;RC<=0;end else if(load==0&updown==1) begin q<=q-1;RC<=0;endif(q>=8'd255) begin RC<=1;    endend
end
endmodule

3)代码书写结束后,选择Processing>Start Compilation对编写的代码进行编译,编译通过后,建立波形文件,选择Insert Node or Bus,Node Finder,Filter中选择Pins:all,点击List,这样在Nodes Founder区域出现先前HDL文件中定义的输入、输出端口,点击>>,选择OK,如下图:

4)Processing>Simulation Tool,Simulation mode选择Functional(功能仿真),点击Generate Functional Simulation Netlist按键生成功能仿真网表(如要进行时序仿真,则Simulation Mode选择Timing),如下图:

5)结果:上述程序仿真结果如下图所示:

上图为无预置数、无异步清除、加计数的仿真结果。

上图为无预置数、无异步清除、减计数的仿真结果。

上图为异步清除的仿真结果。

上图为预置数输入10100000(十进制:160)、无异步清除的仿真结果。

综上所述,程序和仿真结果均达到设计要求。

2、逻辑综合:

1) Open Terminal打开操作终端,键入Linux系统命令打开Syn,在Syn下建立工作目录WorkArea如图:

2)进入建好的工作目录,键入design_vision 命令启动用户图形界面如图:

3)File->Setup,设置综合时所要映射的在/home/cdsmgr/digitalIC/Syn目录下的逻辑单元库文件.db以及符号库文件.sdb,如图:

4)File->Elaboration,分析设计模型,进行综合前预处理,Create Design Schematic查看综合前电路图,如图:

5)命令执行信息窗口显示了使用的寄存器信息和清零端信息(AR:asynchronous reset)如图:

6)Create symbol view,生成综合前的电路元件符号如图:

7)Attributes->Specify Clock ,设定时钟如图:(可在Attributes->Operation Environment 下设定输入延迟、驱动能力、连线负载等其他参数)

8)Attributes->Optimization Constraints–>Design Constraints,进行综合过程的条件约束设置,将面积优化到最小,如图:(可在Attributes->Optimization Constraints下设定优化时间等参数)

9)Design->Compile Design 进行编译后,综合后电路图与电路元件符号如图:

10)Timing->Report Timing Path,报告时序信息如下一图,其中slack(MET)大于0,满足设计时序要求;Design->Report Area,报告面积信息如下二图:

11)File->Save as,保存综合后网表文件LiTianhaomapped.v

12)命令行键入write_sdf  LiTianhaomapped.sdf,保存延时信息:

13)命令栏键入write_sdc  -nosplit  LiTianhaomapped.sdc ,保存时钟设计约束条件:

14)综合完成。在工作目录下找到综合后网表文件LiTianhaomapped.v和时钟约束条件文件LiTianhaomapped.sdc,用于后面的布局布线。

15)在工作目录将综合后的模块名改为和文件名一致(LiTianhaomapped),如图:

3、自动布局布线:

1)Xshell5—>属性,设置主机地址,然后点击“隧道”,勾选Xmanager,连接主机并登录,如图:

2)使用vi编辑器将综合后网表文件LiTianhaomapped.v和时钟约束条件文件LiTianhaomapped.sdc以及LiTianhaomapped.sdf文件导入主机,分别如下三图:

3)键入 encounter  命令启动用户图形界面如下两图:

4)Design-> Design Import 设置输入文件,同时Advanced --Power设置如图:

Advanced --RC Extraction设置与Advanced --SI Analysis设置如下两图:

5)Save保存为LiTianhaomapped.conf文件,之后OK,得下图:

6)FloorPlan -> Specify Floorplan 进行版图的平面规划,设置与结果如下两图:

7)Power -> Power Planning -> Add Ring 添加电源线,设置与结果如下两图:

8)Edit -> Pin Editor进行端口定位,逐一设定各个端口的方位和使用的金属层、端口坐标,设置与结果如下两图:

9)Route -> Special Route进行布线,设置与结果如下两图:

10)FloorPlan -> Connect Global Net连接所有电源和地,如下左图,Place -> Place Standard Cell,把标准逻辑单元放入,结果如下右图:

11)Route -> Trail Route 进行布线,连接所有标准单元,如图:

12)Timing -> Extract RC抽取寄生参数,如下左图,Route -> NanoRoute -> Route进行精确布线,结果如下右图:

13)Place—>Physical Cells —>Add Filler,在Cell List栏选择Filler的Cell名,将Cell列表中的Cell都选择上,设置如下两图:

给Core中加入Filler,添加完Filler的版图如下:

14)Verify进行几何形状验证及连接验证:Geometry、Connectivity,如下两图:

15)输出布局布线后网表文件(.v)及时序信息文件(.sdf),Timing→ Extract RC,保存spf,spef文件。如下两图:

16)输出版图信息(.gds):Design →Save →GDS,保存GDSII格式版图文件,命名为LiTianhaomapped.gds,Map File选择streamOut_IBM13.map,如图:

17)最终版图如下:

数字集成电路及其版图设计:带有预置数功能的8位二进制加减计数器设计及版图实现相关推荐

  1. 数字电子技术课程设计之基于触发器的三位二进制同步减法计数器无效态000/110

    基于触发器的三位二进制同步减法计数器无效态000/110 1 课程设计的目的与作用 掌握用multisim 的电路仿真程序 熟悉同步计数器工作原理和逻辑功能 熟悉计数器电路的分析和设计方法 掌握161 ...

  2. php 天数加减_PHP实现针对日期,月数,天数,周数,小时,分,秒等的加减运算示例【基于strtotime】...

    本文实例讲述了PHP实现针对日期,月数,天数,周数,小时,分,秒等的加减运算方法.分享给大家供大家参考,具体如下: 其实就是strtotime这个内置函数 //PHP 日期 加减 周 date(&qu ...

  3. 16位并行加载寄存器设计

  4. 4位并行加载寄存器设计

  5. 8位加减发器设计(74181)

    前两天刚帮朋位友做了一个数字电路里的8位加减发器,感触颇深啊!一个简单的8位加减发器都做了好久,而且-- 简单说一下题目: 熟悉计算机的加.减法运算的原理和硬件电路的实现,掌握带符号加减法的溢出方法判 ...

  6. 数字集成电路的层次关系

    转发一篇博文,挺喜欢它的那个层次图,很清晰的反映了数字集成电路的层次关系:https://blog.csdn.net/bsbhenry/article/details/82556215 数字电路的设计 ...

  7. 两个多精度十进制数加法程序设计_初中数学之有理数的加减,学会加法,减法即会,掌握技巧轻松计算...

    学习了有理数中的相关知识点,关于有理数的加减运算,也是考试中必考的内容,尤其是对于刚进入初中的学生来说,小数的时候学的加减法,到了初中突然发现数字前面有带符号了,其实整体而言,小学时候学的加减运算法则 ...

  8. 技术专栏|多旋翼飞行器振动机理分析和减振设计

    注:本文涉及的硬件.单片机程序.实验数据.数据处理程序.滤波器程序.3D模型和模态云图等,可通过微信公众号(阿木实验室)回复:"振动分析"或"减振设计"获得. ...

  9. LeetCode5377. 将二进制表示减到1的步骤数

    LeetCode5377. 将二进制表示减到 1 的步骤数 文章目录 LeetCode5377. 将二进制表示减到 1 的步骤数 题目描述 解题思路 AC代码 题目描述 给你一个以二进制形式表示的数字 ...

最新文章

  1. 前端如何获取后台通过map封装的值_如何舒服的写api接口?
  2. Linux shell 中的数组和关联数组
  3. linux 信号处理函数详解
  4. Java用freemarker导出word
  5. Asp.net ajax、Anthem.net、Ajax pro三大ajax框架那一种使用比较方便?易于配置?
  6. leetcode二分查找
  7. java多叉树的遍历
  8. 美图回应与华为合作:华为没有使用美图的任何影像技术
  9. 如何从零开始搭建自己的博客
  10. php能做什么程序,PHP 能做什么?
  11. Linux篇---Grep和正则匹配
  12. Atitit diy战略 attilax总结
  13. 小学阅读方法六种_小学数学阅读理解解题技巧,附常见的6种方法
  14. android dtb文件位置_确定msm8937+android7.1采用的dtb文件
  15. 微信公众号运营推广方案分享
  16. 函数与反函数的图像性质
  17. Bioventus在马来西亚上市DUROLANE(R),并选中Athrotech作为独家经销伙伴
  18. 关于stylegan3第一次运行编译filtered_lrelu_plugin出错的问题
  19. C++中的CopyElision
  20. 未来计算机专业会怎么样

热门文章

  1. ExtAspNet v3.1.4
  2. 实景建模整合了什么优势?有哪些领域应用?
  3. 谈管理:员工的离职原因
  4. 【正则】正则匹配 QQ号, 邮箱email,手机号码新号段,生日
  5. 数据分析面试题——业务思维逻辑
  6. 三种方式让你在 Linux 上玩电子游戏
  7. php 网站在线客服插件,jquery实现漂浮在网页右侧的qq在线客服插件示例_jquery
  8. Web3.0这个故事,要从《大教堂与市集》讲起
  9. 固定开头的电话号码的中间四位号码的屏蔽
  10. 计算机六级准考证,2019英语六级准考证打印