实验一:4通道分频器的设计
一、实验目的
(1)熟悉软件环境
(2)理解用VHDL进行设计综合的流程和方法
(3)掌握VHDL的代码结构及电路描述方法
(4)理解并行语句和顺序语句
(5)用VHDL语言编写一个四通道分频器及其测试文件
二、实验原理
在数字电路中,常常需要对较高频率的时钟进行分频操作,得到较低频率的时钟信号,即分频器。实现分频器的方法有很多,最常用的是使用计数器分频的方式,而分频也分为偶数分频(2N)、奇数分频(2N+1)、半整数分频(N-0.5)等等,对于最简单的偶数分频,只需要使用模值位N的计数器实现50%占空比的时钟信号,即每次计数满N时输出时钟信号翻转即可。
三、实验内容
本次的实验任务是将一个1Mhz的信号分频成100khz、10khz、1khz、100hz。实验要求每相差十倍频率就有脉冲输出,推荐采用十进制计数器对信号进行分频,即判断输入信号上升沿或下降沿的个数,每计满5个即让输出信号电平翻转,以此实现10分频。
然后将10进制计数器做成COMPENENT,利用元件例化语句实现调用,在测试文件(TEST-BENCH,TB)中只需要给输入1Mhz方波信号。
图1 分频器示意图
四、实验代码
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY FPQ IS
GENERIC(N:INTEGER:=10);
PORT(FPQ_in:IN STD_LOGIC;
FPQ_out_0:BUFFER STD_LOGIC;
FPQ_out_1:BUFFER STD_LOGIC;
FPQ_out_2:BUFFER STD_LOGIC;
FPQ_out_3:BUFFER STD_LOGIC);
END FPQ;
ARCHITECTURE behavior OF FPQ IS
SIGNAL TEMP_0:INTEGER RANGE 0 TO N-1;
SIGNAL TEMP_1:INTEGER RANGE 0 TO N-1;
SIGNAL TEMP_2:INTEGER RANGE 0 TO N-1;
SIGNAL TEMP_3:INTEGER RANGE 0 TO N-1;
BEGIN
PROCESS(FPQ_in)
BEGIN
IF(FPQ_in'EVENT AND FPQ_in='1')THEN
IF(TEMP_0<N-1)THEN
TEMP_0<=TEMP_0+1;
ELSE
TEMP_0<=0;
END IF;
END IF;
END PROCESS;
PROCESS(TEMP_0)
BEGIN
IF(TEMP_0<N/2)THEN
FPQ_out_0<='1';
ELSE
FPQ_out_0<='0';
END IF;
END PROCESS;
PROCESS(FPQ_out_0)