计算机硬件课程设计实验报告.rar
计算机硬件课程设计实验报告,实验部分1)16进制计数器,该计数器有清零和计数允许功能。输入信号为clk,清零拉制信号为clr(低电平有效),计数允许控制信号为en(高电平有效),输出信号为a、b、c、d,要求画出16进制计数器的时序图。[时序图]:abcd000001000120010300114010050101601...
该文档为压缩文件,包含的文件列表如下:
内容介绍
原文档由会员 xiaowei 发布
计算机硬件课程设计实验报告
<设计说明书>
实验部分
1) 16进制计数器,该计数器有清零和计数允许功能。输入信号为CLK,清零拉制信号为CLR(低电平有效),计数允许控制信号为EN(高电平有效),输出信号为A、B、C、D,要求画出16进制计数器的时序图。
[时序图]:
A B C D
0 0 0 0 0
1 0 0 0 1
2 0 0 1 0
3 0 0 1 1
4 0 1 0 0
5 0 1 0 1
6 0 1 1 0
7 0 1 1 1
8 1 0 0 0
9 1 0 0 1
10 1 0 1 0
11 1 0 1 1
12 1 1 0 0
13 1 1 0 1
14 1 1 1 0
15 1 1 1 1
[源程序]:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity demo1 is--定义实体demo1
port(clk,clr,en:in std_logic;--定义clk,clr,en模式为输入
A,B,C,D: out std_logic);--定义A,B,C,D模式为输出
end;
architecture demo1_arch of demo1 is--定义结构体demo1_arch
signal count:std_logic_vector(3 downto 0);--定义信号为4位逻辑矢量
begin
A<=count(0);
B<=count(1);
C<=count(2);
D<=count(3);
process(clk,clr)
Begin
if(clr='0') then
count<="0000";--实现清零的功能
elsif rising_edge(clk) then--否则当CLK为上升沿时
if(en='1') then
if(count="1111") then
count<="0000";--EN为高电平下,计到15时候归0
else
count<=count+'1';--否则持续自+1
end if;
end if;
end if;
end process;--结束进程
end demo1_arch;--结束结构体
[引脚设置]:
clk in 11
clr in 14
en in 24
A out 15
B out 16
C out 17
D out 18
[程序说明]:
这个程序设计思路较简单,指导书上有20进制的程序范例,唯一不同的就是20进制则定义信号为5位逻辑矢量,输出为ABCDE,而16进制则定义信号为4位逻辑矢量,输出为ABCD。还有就是在最后要改成计到1111(15)时清零,而不是10011(19)。
<设计说明书>
实验部分
1) 16进制计数器,该计数器有清零和计数允许功能。输入信号为CLK,清零拉制信号为CLR(低电平有效),计数允许控制信号为EN(高电平有效),输出信号为A、B、C、D,要求画出16进制计数器的时序图。
[时序图]:
A B C D
0 0 0 0 0
1 0 0 0 1
2 0 0 1 0
3 0 0 1 1
4 0 1 0 0
5 0 1 0 1
6 0 1 1 0
7 0 1 1 1
8 1 0 0 0
9 1 0 0 1
10 1 0 1 0
11 1 0 1 1
12 1 1 0 0
13 1 1 0 1
14 1 1 1 0
15 1 1 1 1
[源程序]:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity demo1 is--定义实体demo1
port(clk,clr,en:in std_logic;--定义clk,clr,en模式为输入
A,B,C,D: out std_logic);--定义A,B,C,D模式为输出
end;
architecture demo1_arch of demo1 is--定义结构体demo1_arch
signal count:std_logic_vector(3 downto 0);--定义信号为4位逻辑矢量
begin
A<=count(0);
B<=count(1);
C<=count(2);
D<=count(3);
process(clk,clr)
Begin
if(clr='0') then
count<="0000";--实现清零的功能
elsif rising_edge(clk) then--否则当CLK为上升沿时
if(en='1') then
if(count="1111") then
count<="0000";--EN为高电平下,计到15时候归0
else
count<=count+'1';--否则持续自+1
end if;
end if;
end if;
end process;--结束进程
end demo1_arch;--结束结构体
[引脚设置]:
clk in 11
clr in 14
en in 24
A out 15
B out 16
C out 17
D out 18
[程序说明]:
这个程序设计思路较简单,指导书上有20进制的程序范例,唯一不同的就是20进制则定义信号为5位逻辑矢量,输出为ABCDE,而16进制则定义信号为4位逻辑矢量,输出为ABCD。还有就是在最后要改成计到1111(15)时清零,而不是10011(19)。