基于FPGA的半整数分频器设计

更新时间:2024-01-23 09:28:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

基于FPGA的半整数分频器设计

一.系统设计任务及功能概述

1.系统设计任务基于FPGA的半整数分频器设计

任务要求:设有一个5MHz(或7、9、11、13、15、17、19、21、23 、25MHz)的时钟源,但电路中需要产生一个2MHz的时钟信号,由于分频比为2.5(或3.5、4.5、5.5、6.5、7.5、8.5、9.5、10.5、11.5、12.5),因此采用小数分频。 2.小数分频的基本原理

小数分频的基本原理是采用脉冲吞吐计数器和锁相环技术先设计两个不同分频比的整数分频器,然后通过控制单位时间内两种分频比出现的不同次数来获得所需要的小数分频值。如设计一个分频系数为10.1的分频器时,可以将分频器设计成9次10分频,1次11分频,这样总的分频值为:

F=(9×10+1×11)/(9+1)=10.1 3.系统功能概述

本系统是一个基于FPGA的半整数分频器,具有以下功能:有一个5MHz的时钟源,通过半整数分频器后电路中可以产生的是一个2MHz的时钟信号

二.系统设计方案和程序设计

1.系统设计方案

由于分频比为2.5,因此采用小数分频。 分频系数为N-0.5的分频器,其电路可由一个异或门、一个模N计数器和二分频器组成。下图给出了通用半整数分频器电路组成。 f0=5MHz异或门模N计数器f0/(N-0.5)2分频器f0/(2N-1)Q(5分频)OUTCLK(2.5分频) 由于分频比为2.5则本实验中先要设计一个模11的计数器,然后建立模11计数器的元件,再利用原理图设计完成分频器的设计 2.VHDL程序设计 Q(五分频)模11计数器VHDL程序如下: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY JSHQ11 IS --定义实体JSHQ PORT(CLR,ENA,CLK:IN STD_LOGIC; QA,QB,QC,QD:OUT STD_LOGIC); END ENTITY JSHQ11;

ARCHITECTURE ART OF JSHQ11 IS --定义了结构体 SIGNAL CQI: STD_LOGIC_VECTOR(0 TO 3); BEGIN

PROCESS(CLK,CLR,ENA)IS --进程开始,CLK,CLR,ENA为敏感信号 BEGIN

IF CLR='1' THEN CQI<=\ ELSE

1

IF CLK'EVENT AND CLK='1'THEN IF ENA='1'THEN

IF CQI=10THEN CQI<=\ ELSE

CQI<=CQI+1; END IF; END IF; END IF; END IF;

END PROCESS;

QA<=CQI(0); -- 信号赋值 QB<=CQI(1); QC<=CQI(2); QD<=CQI(3);

END ARCHITECTURE ART;

接口 名称 INCLK OUTCLK Q 类型 (输入/输出) IN OUT OUT 结构图上 的信号名 inclock outclk q 2 3 4 引脚号 说明 系统时钟 21MHz 系统输出 系统输出 3.输入、输出接口说明

三、仿真结果及原理图

1.模11计数器仿真波形图

图1计数器仿真波形图

2

2.模11计数器元件图

图2计数器元件图

3.半整数分频器原理图

图3分频器原理图

4.半整数分频器仿真波形图

3

图4分频器仿真波形图

5.半整数分频器元件图

图5分频器元件图

三.课程设计总结

本次试验采用了程序与原理图相结合的设计方法,主要编写计数器的程序实现分频。经过一段时间的实验操作使我熟练的掌握了对软件maxplus2的使用,加深了对VHDL语言的了解,提高了编程能力。 掌握了一定的改错能力,业余还了解了一些关于EDA在实际中扮演的重要角色。这次实习获益匪浅,增加了对这门课的兴趣。 四.参考文献

[1] 谭会生,瞿遂春.EDA综合应用与实例分析. 西安:西安电子科技大学出版社,2004,11. [2]潘松著.EDA技术实用教程(第二版). 北京:科学出版社,2005.

[3] 谭会生,张昌凡编著.EDA技术及应用. 西安:西安电子科技大学出版社.2011,1. [4] 阎石主编.数字电子技术基础. 北京:高教出版社,2003.

[5] 刘艳萍,高振斌,李志军.EDA实用技术及应用[M].北京:国防工业出版社,2006

4

十字路口交通灯控制器的VHDL设计

一.系统设计任务及功能概述

1.系统设计任务

设计一个由一条主干道和一条支干道的汇合点形成的十字交叉路口的交通灯控制器. 2.系统功能概述

(1)主、支干道各设有一个绿、黄、红指示灯,两个显示数码管。 (2)主干道处于常允许通行状态,而支干道有车来才允许通行。

(3)当主、支道均有车时,两者交替允许通行,主干道每次放行45s,支干道每次放行25s,在每次由亮绿灯变成亮红灯的转换过程中,要亮5s的黄灯作为过渡,并进行减计时显示。

二.系统设计方案和程序设计

1.系统设计方案

交通灯的控制电路主要由四大模块组成,通过传感器来判别主干道与支干道车辆运行情况,然后由交通灯实现车辆的自动控制。交通控制模块发出主支道控制信号,选择定时模块工作,控制显示模块。定时模块由45s,25s,5s三部分组成,实现红黄绿三个灯的显示时间。显示控制模块为译码做准备,相互配合实现时间显示。

交通控制 显示控制 译码 定时

2.VHDL程序设计

(1)交通控制模块

a.交通控制模块的程序如下: LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY JTD IS

PORT(CLK,SM,SB:IN STD_LOGIC; --SM,SB为主道和支道传感器信号 MR,MY,MG,BR,BY,BG:OUT STD_LOGIC); END ENTITY JTD;

ARCHITECTURE ART OF JTD IS TYPE STATE_TYPE IS(A,B,C,D); SIGNAL STATE:STATE_TYPE; BEGIN

5

CNT:PROCESS(CLK)IS --进程开始,CLK为敏感信号 VARIABLE S:INTEGER RANGE 0 TO 45; -- 定义变量范围0到45 VARIABLE CLR,EN:BIT; BEGIN

IF(CLK'EVENT AND CLK='1')THEN IF CLR='0'THEN S:=0;

ELSIF EN='0'THEN S:=S; ELSE S:=S+1; END IF;

CASE STATE IS WHEN A=>MR<='0';MY<='0';MG<='1'; BR<='1';BY<='0';BG<='0'; IF(SB AND SM)='1'THEN

IF S=45 THEN STATE<=B;CLR:='0';EN:='0'; ELSE

STATE<=A;CLR:='1';EN:='1'; END IF;

ELSIF SM='0'THEN

STATE<=B;CLR:='0';EN:='0'; ELSE

STATE<=A;CLR:='1';EN:='1'; END IF;

WHEN B=>MR<='0';MY<='1';MG<='0'; BR<='1';BY<='0';BG<='0'; IF S=5 THEN

STATE<=C;CLR:='0';EN:='0'; ELSE

STATE<=B;CLR:='1';EN:='1'; END IF;

WHEN C=>MR<='1';MY<='0';MG<='0'; BR<='0';BY<='0';BG<='1'; IF (SM AND SB)='1'THEN IF S=25 THEN

STATE<=D;CLR:='1';EN:='1'; END IF;

ELSIF SB='0'THEN

STATE<=D;CLR:='0';EN:='0'; ELSE

STATE<=C;CLR:='1';EN:='1'; END IF;

--CASE四种选择状态 --状态转换 6

WHEN D=>MR<='1';MY<='0';MG<='0'; BR<='0';BY<='1';BG<='0'; IF S=5 THEN

STATE<=A;CLR:='0';EN:='0'; ELSE

STATE<=D;CLR:='1';EN:='1'; END IF; END CASE; END IF;

END PROCESS CNT;

END ARCHITECTURE ART;

b.交通控制模块的波形仿真图如下

图1交通控制模块的波形仿真图

c. 交通控制模块的元件图如下:

图2 交通控制模块生成元件图

7

d. 输入、输出接口说明:

表1 交通控制模块的输入\\输出接口说明

接口名称 类型(输入\\输出) 引脚 说明 CLK IN 1 时钟信号 SM IN 3 主道车信号 SB IN 5 支道车信号 MR OUT 2 主道红灯 MG OUT 4 主道绿灯 MY OUT 6 主道黄灯 BG OUT 8 支道绿灯 BY OUT 10 支道黄灯 BR OUT 12 支道红灯

(2) 45s,25s,5s定时模块的程序设计如下: a.45s定时模块的程序设计如下: ——CNT45S LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CNT45S IS

PORT(SB,CLK,EN45:IN STD_LOGIC;

DOUT45M,DOUT45B:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); END ENTITY CNT45S;

ARCHITECTURE ART OF CNT45S IS

SIGNAL CNT6B:STD_LOGIC_VECTOR(5 DOWNTO 0); --信号类型矢量类 BEGIN

PROCESS(SB,CLK,EN45)IS --进程开始 BEGIN

IF SB='0'THEN CNT6B<=CNT6B-CNT6B-1; ELSIF(CLK'EVENT AND CLK='1')THEN

IF EN45='1'THEN CNT6B<=CNT6B+1; --加法计数器 ELSIF EN45='0'THEN CNT6B<=CNT6B-CNT6B-1; END IF; END IF; END PROCESS;

PROCESS(CNT6B)IS BEGIN

CASE CNT6B IS --倒计时 WHEN\WHEN\WHEN\WHEN\WHEN\

8

WHEN\WHEN\WHEN\WHEN\WHEN\WHEN\WHEN\WHEN\WHEN\WHEN\WHEN\WHEN\WHEN\WHEN\WHEN\WHEN\WHEN\WHEN\WHEN\WHEN\WHEN\WHEN\WHEN\WHEN\WHEN\WHEN\WHEN\WHEN\WHEN\WHEN\WHEN\WHEN\WHEN\WHEN\WHEN\WHEN\WHEN\WHEN\WHEN\WHEN\WHEN OTHERS=>DOUT45M<=\END CASE; END PROCESS;

END ARCHITECTURE ART;

9

b. 45s定时模块的波形仿真图如下

图3 45s定时模块的波形仿真图

c.45s定时模块的元件图如下:

图4 45s定时模块的元件图

d. 输入、输出接口说明

表2 计分模块的输入\\输出接口说明

接口名称 类型(输入\\输出) 引脚 说明 SB 输入 1 支道车信号 CLK 输入 2 分时钟信号 EN45 输入 5 使能信号 DOU45S[7..0] 输出 21 输出 DOU45B[7..0] 输出 22 输出

10

a.25s定时模块的程序设计如下: ——CNT25S LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CNT25S IS

PORT(SB,SM,CLK,EN25:IN STD_LOGIC;

DOUT25M,DOUT25B:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); END ENTITY CNT25S;

ARCHITECTURE ART OF CNT25S IS

SIGNAL CNT5B:STD_LOGIC_VECTOR(4 DOWNTO 0); BEGIN

PROCESS(SB,SM,CLK,EN25)IS BEGIN

IF SB='0' OR SM='0' THEN --25进制加法计数器 CNT5B<=CNT5B-CNT5B-1;

ELSIF(CLK'EVENT AND CLK='1')THEN IF EN25='1'THEN CNT5B<=CNT5B+1; ELSIF EN25='0'THEN

CNT5B<=CNT5B-CNT5B-1; END IF; END IF;

END PROCESS;

PROCESS(CNT5B) IS --倒计时 BEGIN

CASE CNT5B IS

WHEN \ WHEN \WHEN \WHEN \WHEN \WHEN \WHEN \WHEN \WHEN \WHEN \WHEN \WHEN \WHEN \WHEN \WHEN \

11

WHEN \WHEN \WHEN \WHEN \WHEN \WHEN \WHEN \WHEN \WHEN \WHEN \WHEN OTHERS =>DOUT25B<=\END CASE; END PROCESS;

END ARCHITECTURE ART;

.b. 25s定时模块的波形仿真图如下

图5 25s定时模块的波形仿真图

c.25s定时模块的元件图如下:

图6 25s定时模块的元件图

12

a. 5s定时模块的程序设计如下: ——CNT05S LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY CNT05S IS --定义实体 PORT(CLK,EN05M,EN05B:IN STD_LOGIC;

DOUT5:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); END ENTITY CNT05S;

ARCHITECTURE ART OF CNT05S IS

SIGNAL CNT3B:STD_LOGIC_VECTOR(2 DOWNTO 0); BEGIN

PROCESS(CLK,EN05M,EN05B)IS BEGIN

IF(CLK'EVENT AND CLK='1')THEN IF EN05M='1'OR EN05B='1'THEN CNT3B<=CNT3B+1; ELSE

CNT3B<=\ END IF; END IF;

END PROCESS;

PROCESS(CNT3B)IS BEGIN

CASE CNT3B IS

WHEN\WHEN\WHEN\WHEN\WHEN\WHEN OTHERS=>DOUT5<=\END CASE;

END PROCESS;

END ARCHITECTURE ART;

b. 5s定时模块的波形仿真图如下

13

图7 5s定时模块的波形仿真

c.、5s定时模块的元件图如下:

图8 5s定时模块的元件图

(3)显示控制模块

a.显示控制模块的程序如下: ——XSKZ

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY XIANSHI IS

PORT(EN45,EN25,EN05M,EN05B:IN STD_LOGIC;

AIN45M,AIN45B:IN STD_LOGIC_VECTOR(7 DOWNTO 0);

AIN25M,AIN25B,AIN05:IN STD_LOGIC_VECTOR(7 DOWNTO 0); DOUTM,DOUTB:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); END ENTITY XIANSHI;

ARCHITECTURE ART OF XIANSHI IS BEGIN

PROCESS(EN45,EN25,EN05M,EN05B)IS --选择模块 BEGIN

IF EN45='1'THEN

DOUTM<=AIN45M(7 DOWNTO 0);DOUTB<=AIN45B(7 DOWNTO 0); ELSIF EN05M='1'THEN

DOUTM<=AIN05(7 DOWNTO 0);DOUTB<=AIN05(7 DOWNTO 0); ELSIF EN25='1'THEN

DOUTM<=AIN25M(7 DOWNTO 0);DOUTB<=AIN25B(7 DOWNTO 0); ELSIF EN05B='1'THEN

DOUTM<=AIN05(7 DOWNTO 0);DOUTB<=AIN05(7 DOWNTO 0); END IF;

14

END PROCESS;

END ARCHITECTURE ART;

b.25s定时模块的元件图如下:

图9 显示控制生成元件图

三、十字路口交通灯控制器

设计交通控制器主要就是设计控制电路、定时时器电路和译码器电路三部分。在设计完这三部分的程序之后进行波形仿真,创建原件,其它的按照电路功能的要求直接调用器件,然后进行连接,实现其总体的功能。

1. 十字路口交通灯控制器原理图

图10十字路口交通灯控制器原理图

15

2. 十字路口交通灯控制器的波形仿真图

图11十字路口交通灯控制器的波形仿真图

3、十字路口交通灯控制器的元件图

图12十字路口交通灯控制器的元件图

四.课程设计总结

通过综合实验的思考和设计,对一个项目的整体设计有了进一步认识。第一次看到这样的大题目,困难重重,掌握他的工作原理以及控制结构花了大部分时间,其次就是编写程序。当看到要求后,应该对项目进行分功能和模块的设计,自顶向下,完成顶层的设计后,再编写功能模块。模块化设计便于修改和查错。通过程序的编写,加深了对VHDL语言的了解,提高了编程能力。这次设计我感觉程序调试最重要,我在编完各模块程序之后,编译查错最初有二十几个错误,有输入错误、语法错误。一遍一遍的编译查错,直到没有错误。必须注意工程名和实体名一致,以及保存过程中出现同名,调不出元件图。在没有错误之后可以进行波型仿真。若与理想的不同,再查看程序,有无原理上的编辑错误或没有查出

16

的输入错误。锻炼了独立发现问题解决问题的能力,提高了个人素质。

五.参考文献

[1] 谭会生,瞿遂春.EDA综合应用与实例分析. 西安:西安电子科技大学出版社,2004,11. [2]潘松著.EDA技术实用教程(第二版). 北京:科学出版社,2005.

[3] 谭会生,张昌凡编著.EDA技术及应用. 西安:西安电子科技大学出版社.2011,1. [4] 阎石主编.数字电子技术基础. 北京:高教出版社,2003.

[5] 刘艳萍,高振斌,李志军.EDA实用技术及应用[M].北京:国防工业出版社,2006

17

本文来源:https://www.bwwdw.com/article/006o.html

Top