计数器
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验报告
项目:计数器
1、同步4位二进制计数器:具有异步清零和同步置数功能的4位二进制计数器。clk为时钟信号输入端,s为置数端,r为清零端,en为使能端,d为4位二进制预置数据端,q为4位二进制计数输出端,co为进位信号输出端。编写VHDL 代码,仿真验证。真值表如下:
clk r s en 状态
X 1 X X 置零
↑0 1 X 预置数赋值
↑0 0 1 计数
X 0 0 0 保持不变
代码如下:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY EX_COUNT_SYNC_4ADD IS
PORT(CP,RESET:IN STD_LOGIC;
Q0,Q1,Q2,Q3:OUT STD_LOGIC);
END EX_COUNT_SYNC_4ADD;
ARCHITECTURE ONE OF EX_COUNT_SYNC_4ADD IS
BEGIN
PROCESS(CP)
V ARIABLE Q_TEMP:STD_LOGIC_VECTOR(3 DOWNTO 0);
BEGIN
IF RESET='0' THEN
Q_TEMP:="0000";
ELSIF CP'EVENT AND CP='1' THEN
Q_TEMP:=Q_TEMP+1;
END IF;
Q3<=Q_TEMP(3);Q2<=Q_TEMP(2);
Q1<=Q_TEMP(1);Q0<=Q_TEMP(0);
END PROCESS;
END ONE;
仿真波形如下:
功能仿真:
时序仿真:
2、同步24进制计数器:具有异步清零的24进制计数器。clk为时钟信号输入端,clr为清零端,one为个位计数输出端,ten为十位计数输出端,co为进位信号输出端。编写VHDL代码,仿真验证。
代码如下:
LIBRARY IEEE;
USE ieee.std_logic_1164.ALL;
USE ieee.std_logic_unsigned.ALL;
ENTITY test27 IS
PORT (clk,clr : IN std_logic;
ten,one : out std_logic_vector(3 downto 0);
co : out std_logic);
END test27;
ARCHITECTURE one OF test27 IS
signal ten_temp,one_temp:std_logic_vector(3 downto 0); BEGIN
PROCESS(clk,clr)
BEGIN
if clr='1' then ten_temp<="0000";one_temp<="0000"; elsif clk'event and clk='1' then
if ten_temp=2 and one_temp=3
then ten_temp<="0000";one_temp<="0000";
elsif one_temp=9
then one_temp<="0000";ten_temp<=ten_temp+1;
else one_temp<=one_temp+1;
end if;
end if;
end process;
ten<=ten_temp;one<=one_temp;
co<='1' when ten_temp=2 and one_temp=3 else '0';
end one;
仿真波形如下:
功能仿真:
时序仿真:
3、同步60进制计数器:具有异步清零的60进制计数器。clk为时钟信号输入端,clr为清零端,one为个位计数输出端,ten为十位计数输出端,co为进位信号输出端。编写VHDL代码,仿真验证。
代码如下:
仿真波形如下:
功能仿真:
时序仿真:
4、异步计数器:异步4位二进制计数器。clk为时钟信号输入端,clr为复位清零端,q为计数输出端。参照下图绘制原理图并仿真验证。编写VHDL代码,仿
真验证。原理图如下:
代码如下:
LIBRARY IEEE;
USE ieee.std_logic_1164.ALL;
ENTITY mydff IS
PORT ( clk,r,d : IN std_logic;
q,qn : OUT std_logic);
END mydff;
ARCHITECTURE one OF mydff IS
BEGIN
PROCESS(clk,r,d)
BEGIN
if r='0' then q<='0';qn<='1';
elsif clk'event and clk='1' then q<=d;qn<=not d; END if;
END process;
END one;
仿真波形如下:
功能仿真:
时序仿真: