实验二 多路复用器与加法器的实现

 实验二 多路复用器与加法器的实现

一、实验目的

    1.熟悉多路复用器、加法器的工作原理。

    2.学会使用 VHDL 语言设计多路复用器、加法器。

    3.掌握 generic 的使用,设计 n-1 多路复用器。

    4.兼顾速度与成本,设计行波加法器和先行进位加法器。

 

二、实验内容

    1.用 VHDL 语言设计 8 重 3-1 多路复用器;

    2.用 VHDL 语言设计 n-1 多路复用器,调用该 n-1 多路复用器定制为 8-1 多路复用器。

    3.用 VHDL 语言设计 4 位行波进位加法器。

    4.用 VHDL 语言设计 4 位先行进位加法器。

 

三、实验方法

  1. 实验方法:

       1采用基于FPGA进行数字逻辑电路设计的方法。

        2采用的软件工具是QuartusII软件仿真平台。

  1. 实验步骤:
  1. 新建,编写源代码。

(1).选择保存项和芯片类型:【File】-【new project wizard】-【next】(设置文件路径+设置project name)-【next】-【next】(设置Family=FLEX10K;name=EPF10K10TI144-4)-【next】-【finish】

   (2).新建:【file】-【new】(选择AHDL File)-【OK】

2、写好源代码,保存文件(文件名与工程名需保持一致)。

3、编译与调试。确定源代码文件为当前工程文件,点击【processing】-【start compilation】进行文件编译。编译结果无警告,文件编译成功。

4、波形仿真及验证。【file】-【new】(选择Vector Waveform File)-【OK】。按照程序所述插入节点(插入输入节点和输出节点)。(操作为:左键双击NAME下方框框 -【Node Finder】(设置Filter:Pins:all)-【list】)-【>>】-【ok】-【ok】)。按题目需求设置输入波形,点击保存按钮保存。

5、时序仿真或功能仿真。

    (1).时序仿真:

编译VHDL文件-选择.VWF波形文件-【Processing】-【Simulator Tool】(Simulation mode:选择Timing)-点击开始仿真按钮。

    (2).功能仿真

编译VHDL文件-选择.VWF波形文件-【Processing】-【Simulator Tool】(Simulation mode:选择Functional)-【Generate Funtional Silmulation Netlist】-点击开始仿真按钮。

6、查看RTL Viewer:【Tools】-【netlist viewer】-【RTL viewer】。

四、实验过程

1.8重3-1多路复用器

  1. 编译过程

a)源代码如图(VHDL设计)

b)编译、调试过程

c)结果分析及结论

    结果显示0 errors,0 warnings,VHDL文件满足题目要求。

  1. 波形仿真

a)波形仿真过程(详见实验步骤)

b)波形仿真波形图

功能仿真波形图:

c)结果分析及结论

0-10ns对应: 控制端为00,输出IR1的8位向量 正确

10-20ns对应:控制端为10,输出IR3的8位向量 正确

20-30ns对应:控制端为01,输出IR2的8位向量 正确

30-40ns对应:控制端为00,输出IR1的8位向量 正确

40-50ns对应:控制端为01,输出IR2的8位向量 正确

50-60ns对应:控制端为10,输出IR3的8位向量 正确

60-80ns对应:控制端为11,输入为无效,无输出 正确

  1. 查看RTL Viewer

 

2. 8-1 多路复用器(调用n-1 多路复用器)

  1. 编译过程

a)源代码如图(VHDL设计)

    1)n-1多路复用器的设计:

       2)调用为8-1多路复用器

b)编译、调试过程

c)结果分析及结论

    结果显示0 errors,0 warnings,VHDL文件满足题目要求。

  1. 波形仿真

a)波形仿真过程(详见实验步骤)

b)波形仿真波形图

功能仿真波形图:

c)结果分析及结论

0-10ns对应: 000对应I[0],I[0]为1,输出为1 正确

10-20ns对应:001对应I[1],I[1]为1,输出为1 正确

20-30ns对应:010对应I[2],I[2]为1,输出为1 正确

30-40ns对应:100对应I[3],I[3]为1,输出为1 正确

40-50ns对应:101对应I[4],I[4]为1,输出为1 正确

50-60ns对应:000对应I[5],I[5]为1,输出为1 正确

60-70ns对应:000对应I[6],I[6]为1,输出为1 正确

70-80ns对应:000对应I[7],I[7]为1,输出为1 正确

80-90ns对应: 000对应I[0],I[0]为0,输出为0 正确

90-100ns对应:001对应I[1],I[1]为0,输出为0 正确

100-110ns对应:010对应I[2],I[2]为0,输出为0 正确

110-120ns对应:100对应I[3],I[3]为0,输出为0 正确

120-130ns对应:101对应I[4],I[4]为0,输出为0 正确

130-140ns对应:000对应I[5],I[5]为0,输出为0 正确

140-150ns对应:000对应I[6],I[6]为0,输出为0 正确

150-160ns对应:000对应I[7],I[7]为0,输出为0 正确

  1. 查看RTL Viewer

 

 

3. 4 位行波进位加法器

A.设计方法一:迭代法设计

  1. 编译过程

a)源代码如图(VHDL设计)

    1)半加器VHDL设计:

       2)全加器设计(调用半加器):

       3)4位行波进位加法器设计(调用全加器)

b)编译、调试过程

c)结果分析及结论

    结果显示0 errors,0 warnings,VHDL文件满足题目要求,采用迭代思想设计。

  1. 波形仿真

a)波形仿真过程(详见实验步骤)

b)波形仿真波形图

功能仿真波形图:

c)结果分析及结论

对于功能仿真:

0-10ns对应:   0000+0001+0=00001 正确

10-20ns对应:  0000+0010+0=00010 正确

20-30ns对应:  0000+0100+0=00100 正确

30-40ns对应:  0000+1000+0=01000 正确

40-50ns对应:  0010+0001+0=00011 正确

50-60ns对应:  0100+0010+0=00110 正确

60-70ns对应:  1000+0100+0=01100 正确

70-80ns对应:  0001+1000+0=01001 正确

80-90ns对应:  0000+0001+1=00010 正确

90-100ns对应: 0000+0010+1=00011 正确

100-110ns对应:0000+0100+1=00101 正确

110-120ns对应:0000+1000+1=01001 正确

120-130ns对应:0010+0001+1=00100 正确

130-140ns对应:0100+0010+1=00111 正确

140-150ns对应:1000+0100+1=01101 正确

150-160ns对应:0001+1000+1=01010 正确

150-160ns对应:1111+1111+1=11111 正确

3  查看RTL Viewer

  1. 四位行波进位加法器:

  1. 全加器:

  1. 半加器:

 

B.设计方法二:进位程序设计

1.    编译过程

a)源代码如图(VHDL设计)

b)编译、调试过程

c)结果分析及结论

    结果显示0 errors,0 warnings,VHDL文件满足题目要求。

  1.   波形仿真

a)波形仿真过程(详见实验步骤)

b)波形仿真波形图

功能仿真波形图:

c)结果分析及结论

对于功能仿真:

0-10ns对应:   0000+0001+0=00001 正确

10-20ns对应:  0000+0010+0=00010 正确

20-30ns对应:  0000+0100+0=00100 正确

30-40ns对应:  0000+1000+0=01000 正确

40-50ns对应:  0010+0001+0=00011 正确

50-60ns对应:  0100+0010+0=00110 正确

60-70ns对应:  1000+0100+0=01100 正确

70-80ns对应:  0001+1000+0=01001 正确

80-90ns对应:  0000+0001+1=00010 正确

90-100ns对应: 0000+0010+1=00011 正确

100-110ns对应:0000+0100+1=00101 正确

110-120ns对应:0000+1000+1=01001 正确

120-130ns对应:0010+0001+1=00100 正确

130-140ns对应:0100+0010+1=00111 正确

140-150ns对应:1000+0100+1=01101 正确

150-160ns对应:0001+1000+1=01010 正确

150-160ns对应:1111+1111+1=11111 正确

3   查看RTL Viewer

 

 

 

4. 4 位先行进位加法器

  1. 编译过程

a)源代码如图(VHDL设计)

b)编译、调试过程

c)结果分析及结论

    结果显示0 errors,0 warnings,VHDL文件满足题目要求。

  1. 波形仿真

a)波形仿真过程(详见实验步骤)

b)波形仿真波形图

功能仿真波形图:

c)结果分析及结论

对于功能仿真:

0-10ns对应:   0000+0001+0=00001 正确

10-20ns对应:  0000+0010+0=00010 正确

20-30ns对应:  0000+0100+0=00100 正确

30-40ns对应:  0000+1000+0=01000 正确

40-50ns对应:  0010+0001+0=00011 正确

50-60ns对应:  0100+0010+0=00110 正确

60-70ns对应:  1000+0100+0=01100 正确

70-80ns对应:  0001+1000+0=01001 正确

80-90ns对应:  0000+0001+1=00010 正确

90-100ns对应: 0000+0010+1=00011 正确

100-110ns对应:0000+0100+1=00101 正确

110-120ns对应:0000+1000+1=01001 正确

120-130ns对应:0010+0001+1=00100 正确

130-140ns对应:0100+0010+1=00111 正确

140-150ns对应:1000+0100+1=01101 正确

150-160ns对应:0001+1000+1=01010 正确

150-160ns对应:1111+1111+1=11111 正确

3  查看RTL Viewer

 

五、实验结论与心得

经过本次实验,我对Quartus II仿真软件有了更好的理解和运用,对VHDL语言的使用有了更好的掌握,熟练了创建工程文件、软件编译操作、仿真波形模拟等操作。

了解到VHDL语言可以使用模块并调用模块,熟练掌握了component语法的运用以及模块的调用设计,并利用不同方式使用模块。

为了更好地运用4 位行波进位加法器,熟悉其操作,分别采用了迭代法和进位程序设计,对比两者的RTL视图,更好地理解了迭代法对模块使用的好处以及优点。在实验过程中,写好4 位行波进位加法器和4 位先行进位加法器,通过对波形仿真的操作,明白了先行进位加法器无需等待进位输入的优点。

 

六、思考题

1.多路复用器的实现方法很多,请总结两种以上实现方法。

    一是直接定制特定规模特定需求的多路复用器;

    二是调用模块定制成不同规模的多路复用器。

 

2. 总结 VHDL 语言描述多路复用器的方法和常用语句。

    VHDL语言的基本结构由库和程序包、实体、结构体组成,描述多路复用器常用语句有变量赋值语句、信号代入语句等。

 


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部