EDA技术与应用上机任务 电子信息类 Quartus II或Quartus Prime D触发器、半减器、全减器、可加减控制的50进制加减计数器。

EDA技术与应用上机任务书

  1. 上机目的
  1. 熟悉掌握Quartus II或Quartus Prime开发工具的使用。
  2. 掌握利用硬件描述语言(Verilog)设计简单程序的步骤及方法。
  3. 掌握若干组合逻辑电路及简单时序逻辑电路的Verilog程序设计方法,以及仿真测试方法。
  1. 上机内容
  1. 独立设计一个如图1所示,带同步置位/复位的D触发器,两个反相的输出端为q,qb。其中置位端为pset,复位/清零端为clr,时钟端为clk,数据输入端为d,注意:置位信号的优先级要比复位信号优先级高。
  2. EDA技术与应用上机任务 电子信息类 Quartus II或Quartus Prime D触发器、半减器、全减器、可加减控制的50进制加减计数器。

图1 带同步置位/复位的D触发器示意图

(2)用Verilog语言设计一位半减器,然后在该半减器的基础上利用元件调用的方法设计一位全减器。

   1)半减器真值表如表1。

输入减数(x)

输入被减数(y)

减法差值输出(diff)

减法借位标志输出(s_out)

0

0

0

0

1

1

0

0

1

0

1

0

0

1

1

1

表1 半减器真值表

2)全减器对应原理图如图2。

 

EDA技术与应用上机任务 电子信息类 Quartus II或Quartus Prime D触发器、半减器、全减器、可加减控制的50进制加减计数器。

图2 全减器对应原理图

(3)设计带有异步复位的可加减控制的50进制加减计数器。

. 程序实现

具体代码和上机报告参考:

EDA技术与应用上机报告D触发器半减器全减器50进制加减计数器.zip-专业指导文档类资源-CSDN文库

例如:D触发器:

EDA技术与应用上机任务 电子信息类 Quartus II或Quartus Prime D触发器、半减器、全减器、可加减控制的50进制加减计数器。

 

.仿真附图

(1)D触发器的波形图如图3所示,该图中的clk,pest,clr,d信号在激励文件中已经行进设置,因为题目中要求置位信号的优先级要比复位信号优先级高,所以在该波形中,在置位信号和清零信号同时有效时,q端为高电平。

激励代码主要部分:

Initial begin

    clk = 0;

       clr = 0;

       pset = 0;//首先初始化各个变量,置零

forever begin

              #60 d

              #20 d

       end

end

    always #720 clr = $random;//每隔720ps,clr信号变化

       always #360 pset = $random;//每隔360ps,pest信号变化

       always #20  clk

EDA技术与应用上机任务 电子信息类 Quartus II或Quartus Prime D触发器、半减器、全减器、可加减控制的50进制加减计数器。

  图3  D触发器波形图

  1. 半减器的波形图如图4所示,该图中的clk,x,y信号在激励文件中已经行进设置,输出信号为差值diff和借位标志s_out。如图可知在clk信号有效时,该波形如图4所示,符合半减器真值表内容。

激励代码主要部分:

`define clock_period 20//宏定义clock_period为20ps

initial clk = 0;//clk初始化为0

  always #(`clock_period/2) clk = ~clk;//每隔10ps,clk信号取反

  initial begin

     x = 0;//x初始化为0

     repeat(20)

           #(`clock_period) x = $random;//每隔20ps,x信号变化,重复20次

  end

  initial begin

     y = 0;//y初始化为0

     repeat(20)

           #(`clock_period) y = $random;//每隔20ps,y信号变化,重复20次

end

  initial begin

     #(`clock_period*20)

         $stop;//每隔20*20ps,停止

  end

EDA技术与应用上机任务 电子信息类 Quartus II或Quartus Prime D触发器、半减器、全减器、可加减控制的50进制加减计数器。

图4 半减器波形图

  1. 全减器的波形图如图5所示,该图中的clk, x,y,sub_in信号在激励文件中已经行进设置,全减器在调用了两个半减器的基础上增加了或门,使结果满足全减器真值表。

激励代码主要部分:

`define clock_period 20//宏定义clock_period为20ps

 initial clk = 0;//clk初始化为0

  always #(`clock_period/2) clk = ~clk;//每隔10ps,clk信号取反

  initial begin

     x = 0;//x初始化为0

     repeat(20)

           #(`clock_period) x = $random;//每隔20ps,x信号变化,重复20次

  end

  initial begin

     y = 0;//y初始化为0

     repeat(20)

           #(`clock_period) y = $random;//每隔20ps,y信号变化,重复20次

  end

   initial begin

     sub_in = 0;//sub_in初始化为0

     repeat(20)

           #(`clock_period) sub_in = $random;;//每隔20ps,sub_in信号变化,重复20次

  end

  initial begin

     #(`clock_period*20)

         $stop;//每隔20*20ps,停止

  end

EDA技术与应用上机任务 电子信息类 Quartus II或Quartus Prime D触发器、半减器、全减器、可加减控制的50进制加减计数器。

 图5 全减器波形图

(4)50进制加减计数器的波形图如图6所示,clk作为系统时钟,rst为复位信号低电平触发,当rst=0时输出即为0。adds控制加减,当adds=0时计数器做减法计数,当adds=1时计数器做加法计数。此外当计数器计到49时cout=1即产生进位标志。经过仿真测试,仿真出的波形符合预期计算。

激励代码主要部分:

initial begin

clk=1;rst=0;//clk,rst初始化为0

#100;clk=0;rst=0;//100ps后,clk,rst置为0

#100;clk=0;rst=0;//100ps后,clk,rst置为0

#100;adds=1;//100ps后,adds置为1

 repeat(50)

  begin

  clk=0;rst=1;//clk,rst分别初始化为0,1

  #100;clk=1;rst=1;//100ps后,clk,rst置为1

  #100;

  end

clk=0;rst=1;;//clk,rst分别初始化为0,1

#100;clk=1;rst=1;//100ps后,clk,rst都置为1

#100;clk=1;rst=0;//100ps后,clk,rst分别置为1,0

#100;clk=0;rst=0;//100ps后,clk,rst都置为0

#100;clk=1;rst=1;//100ps后,clk,rst都置为1

#100;$stop;//100ps后,停止

end

EDA技术与应用上机任务 电子信息类 Quartus II或Quartus Prime D触发器、半减器、全减器、可加减控制的50进制加减计数器。

 图6  50进制加减计数器的波形图

.上机总结

通过本次上机任务,我不仅复习了以前学过的数字电路逻辑设计相关知识,也对EDA知识以及对Verilog 语言的运用有了更深一步的理解。通过本次上机任务,我也比较熟悉实验的操作流程,相关的功能菜单选项和Quartus软件的使用,并进一步学习了一些对基本时序电路器件进行描述和仿真。在开始上机时,我对quartus软件的使用不够了解,编译运行上出现了很多问题,也不知道如何调试出波形图。后来,通过对教材第三章的研究,询问同学,以及在网上找资料,知道了module名称要保持与顶层实体一致,建立测试脚本(Test Bench)文件,Test Bench可以自动生成,但是核心语句需要自己添加。同时可以通过修改激励文件调整波形图。这次上机课在软件学习方面花费时间长,锻炼了我的自学能力,提高了我的自学能力。

在设计D触发器时,在复习数字电路逻辑设计相关知识的同时,也对Verilog语言有了更深的理解,并了解了D触发器的工作原理以及如何设计D触发器。在设计一位半减器和全减器的时候,刚开始构建好半减器后,不知道全减器如何调用半减器,后来通过网上查资料解决了问题。对于异步复位可加减50进制加减计数器运用了综合知识,刚开始写的代码在软件中运行有错误,后来通过参考课本解决了该问题。通过这次上机的四个内容,激发了我对eda学习的兴趣,有助于我以后的学习。

来源:小王yue

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年9月21日
下一篇 2021年9月21日

相关推荐