计数器

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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;

仿真波形如下:

功能仿真:

时序仿真:

相关文档
最新文档