硬件描述语言实验九:基本时序逻辑电路设计实验

本文介绍了通过VHDL设计和实现同步清零的10进制计数器和逻辑左移移位寄存器的实验过程,包括步骤、实体定义、功能描述以及实验数据的分析。作者借此深化了对时序逻辑的理解,提升了VHDL编程和问题解决能力。
摘要由CSDN通过智能技术生成

预习报告部分

  • 实验目的:通过设计十进制计数器和逻辑移位寄存器,练习VHDL语言时序逻辑的描述方法。
  • 实验原理

(1)一个具有同步清零和并行输出功能的10进制加法计数器,实体名称为“counter10”,其引脚名称和逻辑功能如下表所示。

输入

输出

功能

clk

clr

q(4位总线)

co

0

计数值

并行输出

进位

输出

计数值清0

1

加法计数

0,1,↓

X

保持

(2)一个具有同步清零、并行输出的7位逻辑左移移位寄存器,(高位为左,低位为右),实体名称为“L_shifter7”,其引脚名称和逻辑功能如下表所示。

输入

输出

功能

clk

clr

si

d

(7位总线)

so

0

串行

输入

并行输出

寄存器值

串行输出

寄存器最高位

寄存器清零

1

寄存器左移

0,1,↓

1

寄存器保持

  • 实验内容:
  1. 设计一个具有同步清零和并行输出功能的10进制加法计数器,实体名称为“counter10”。如上表所示。
  2. 设计一个具有同步清零、并行输出的7位逻辑左移移位寄存器,(高位为左,低位为右),实体名称为“L_shifter7”,其引脚名称和逻辑功能如上表所示。
  • 实验所用设备:PC个人计算机、Windows操作系统、Quartus II集成开发环境软件、HDLE-2实验箱。
  • 实验步骤:①建立工程、②编辑代码、③编译及修改错误、④建立仿真波形并仿真、⑤根据仿真结果分析设计是否正确、⑥写入HDLE-2实验箱FPGA,观察实验结果。

实验报告部分

  • 实验步骤:

(1)10进制加法计数器

(2)7位逻辑左移移位寄存器

  • 实验数据及结果分析:

10进制加法计数器:

7位逻辑左移移位寄存器:

通过对多组实验数据的分析,判断其符合预期结果。如图所示,并且结果符合实验预期。

  • 实验结论: 

实验结果表明,VHDL编写的计数器和寄存器能够实现稳定的功能。计数器能够按照预期的逻辑顺序进行计数,寄存器能够按照设计预期正确存储和传输数据。并且满足设计要求的计数范围。通过仿真验证,发现计数器和寄存器的工作与预期一致符合实验要求。

  • 总结及心得体会:

通过这次实验,我加深了对时序逻辑电路设计的理解,了解了时序逻辑电路在数字电路中的应用,掌握了使用VHDL语言进行基本时序逻辑电路设计的能力。也提高了编码和验证的技能,同时VHDL是一个强大而复杂的语言,实验过程中出现的问题和错误,也帮助了我学会了如何调试和修改VHDL代码,提高了我们的问题解决能力。我也发现自己还有很多需要学习和提高的地方,需要不断学习、实践和改进。

  • 附录(实验源码)

10进制加法计数器:

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

entity counter10 is

port(clk,clr:in std_logic;

qa,qb,qc,qd,co:out std_logic

);

end entity counter10;

architecture rtl of counter10 is

signal count_4:std_logic_vector(3 downto 0);

begin

qa<=count_4(0);

qb<=count_4(1);

qc<=count_4(2);

qd<=count_4(3);

process(clk,clr)is

begin

if(clk'event and clk='1') then

 if(clr='0')then

 count_4<="0000";

 co<='0';

 elsif(clr='1')then

 if(count_4>="1001")then

 count_4<="0000";

 co<='1';

 else

 count_4<=count_4+'1';

 co<='0';

 end if;

 end if;

 end if;

 end process;

 end rtl; 

7位逻辑左移移位寄存器:

library ieee;

use ieee.std_logic_1164.all;

entity L_shifter7 is

port(clk,clr,si  : in std_logic;

  d   : buffer std_logic_vector(6 downto 0);

  so : out std_logic );

end entity L_shifter7;

architecture rtl of L_shifter7 is

begin

process (clk) is

begin

if (clk'event)and(clk='1')then

if (clr = '0')then

d<="0000000"; so<= '0';

else

d(6 downto 1) <= d(5 downto 0);

d(0) <= si;

so <= d(5);

end if;

end if;

end process;

end rtl;

  • 7
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值