实验五 基于cpld时序逻辑电路设计

上传人:wm****3 文档编号:54400059 上传时间:2018-09-12 格式:PPT 页数:23 大小:305.50KB
返回 下载 相关 举报
实验五 基于cpld时序逻辑电路设计_第1页
第1页 / 共23页
实验五 基于cpld时序逻辑电路设计_第2页
第2页 / 共23页
实验五 基于cpld时序逻辑电路设计_第3页
第3页 / 共23页
实验五 基于cpld时序逻辑电路设计_第4页
第4页 / 共23页
实验五 基于cpld时序逻辑电路设计_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《实验五 基于cpld时序逻辑电路设计》由会员分享,可在线阅读,更多相关《实验五 基于cpld时序逻辑电路设计(23页珍藏版)》请在金锄头文库上搜索。

1、实验五基于CPLD/FPGA 时序逻辑电路设计,一 N进制加法计数器设计(N=学号+5) 二 含并行置位的8位移位寄存器设计 数控分频器的设计 *16位定时/计数器的设计 *频率和占空比可调PWM的设计,实验目的,学习任意进制计数器的设计、分析和测试方法 学习串入并出/并入串出的设计、分析和测试方法 学习数控分频器的设计、分析和测试方法 学习通用定时计数器的设计、分析和测试方法 学习通用PWM控制器的设计、分析和测试方法,实验内容,用VHDL语言编写实现下列器件功能的程序并进行编译、波形仿真,下载测试。 一 N进制加/减法计数器设计(N=学号+5) 二 含并行置位的8位移位寄存器设计 三 数控

2、分频器的设计 四 16位定时/计数器的设计 五 频率和占空比可调PWM的设计,实验报告,写出实验电路的设计过程。,实验体会及实验收获。,仿真,下载,记录实验数据、结果。,设计示例1 数控分频器的设计,实验原理:数控分频器的功能就是当在输入端给定不同输入数据时,将对输入的时钟信号有不同的分频比. 数控分频器可以用计数值可并行预置的加法计数器设计完成的 .,设计示例1 数控分频器的设计,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY DVF ISPORT ( CLK : IN ST

3、D_LOGIC;D : IN STD_LOGIC_VECTOR(7 DOWNTO 0);FOUT : OUT STD_LOGIC ); END ENTITY DVF; ARCHITECTURE one OF DVF ISSIGNAL FULL : STD_LOGIC; BEGINP_REG: PROCESS(CLK)VARIABLE CNT8 : STD_LOGIC_VECTOR(7 DOWNTO 0);BEGIN IF CLKEVENT AND CLK = 1 THENIF CNT8 = “11111111“ THEN CNT8 := D; -当计数计满时,输入数据D被同步预置给计数器CNT

4、8 FULL = 1; -同时使溢出标志信号FULL输出为高电平 ELSE CNT8 := CNT8 + 1; -否则继续作加1计数FULL = 0; -且输出溢出标志信号FULL为低电平 END IF;END IF;,设计示例1 数控分频器的设计,END PROCESS P_REG ; - - 为使输出信号占空比为50%,再进行2分频 -P_DIV: PROCESS(FULL)VARIABLE CNT2 : STD_LOGIC;BEGINIF FULLEVENT AND FULL = 1 THEN CNT2 := NOT CNT2 ; IF CNT2 = 1 THEN FOUT = 1; E

5、LSE FOUT -带进位循环左移 REG(0) -自循环左移 REG(0) = REG(15); REG(15 DOWNTO 1) -自循环右移 REG(15) -带进位循环右移REG(15) -加载待移数REG(15 DOWNTO 0) -保持REG = REG ; CY = CY ; END CASE;END IF;END PROCESS;-移位后输出QB(15 DOWNTO 0) = REG(15 DOWNTO 0); CN = CY; END BEHAV;,16位定时/计数器的设计,16位定时/计数器的设计模型,16位定时/计数器的设计,设计原理:根据要求设计模型要求采用4选一多路选

6、择器完成输入信号的选择.采用8进制计数器对所选择的信号进行计数,则输出信号分别为输入信号的2/4/8分频,通过预分频选择器选择进入16进制计数器的计数信号(时钟输出信号).采用可预置计数初值的16位加法计数器完成对输入信号的定时计数.,16位定时/计数器的设计,- - 16位定时/计数器所使用的库和包 - Library IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; - - 16位定时/计数器的实体 - ENTITY TIME16 ISPORT ( TACLK,ACLK.SMCLK,INCLK : IN

7、STD_LOGIC; -时钟输入TACLR : IN STD_LOGIC; -分频器/计数器清零ID : IN STD_LOGIC_VECTOR(1 DOWNTO 0); -预分频选择TASSEL: IN STD_LOGIC_VECTOR(1 DOWNTO 0); -输入时钟选择DATAIN : IN STD_LOGIC_VECTOR(15 DOWNTO 0); -计数器重装载值的数据DATAOUT: OUT STD_LOGIC_VECTOR(15 DOWNTO 0); -移位数据输出TIMECLOCK : OUT STD_LOGIC); -预分频输出时钟SETTAIFG : OUT STD_

8、LOGIC -定时到输出信号); END ENTITY TIME16;,16位定时/计数器的设计,- -16位定时/计数器结构体 - 3个进程 (1)输入信号选择(2)预分频(3)16位可预置初值的加法计数器 - ARCHITECTURE BEHAV OF TIME16 ISSIGNAL FOUT : STD_LOGIC_VECTOR(15 DOWNTO 0);SIGNAL FSL0 : STD_LOGIC_VECTOR( 3 DOWNTO 0);SIGNAL FSL1 : STD_LOGIC;SIGNAL FSEL : STD_LOGIC ;BEGIN - - 定时/计数输入信号选择 -当I

9、D=00 FSEL=TACLK 定时状态 -当ID=01 FSEL=ACLK 定时状态 -当ID=10 FSEL=SMCLK 定时状态 -当ID=11 FSEL=INCLK 计数状态 - P0:PROCESS (TASSEL)BEGINFSEL= TACLK WHEN TASSEL=“00” ELSEACLK WHEN TASSEL=“01” ELSESMCLK WHEN TASSEL=“10” ELSEINCLK ;END PROCESS P0;,16位定时/计数器的设计,- - 预分频计数器/2/4/8/16 - P_DIV: PROCESS(FSEL)VARIABLE CNT2 : ST

10、D_LOGIC_VECTOR( 3 DOWNTO 0);BEGINIF TACLR=0 THEN CNT2:=“0000”ELSIF FSELEVENT AND FSEL = 1 THEN CNT2 := CNT2+1;END IFFSL0=CNT2; END PROCESS P_DIV ;FSL1= FSL(0) WHEN ID =“00” ELSEFSL(1) WHEN ID =“01” ELSEFSL(2) WHEN ID =“10” ELSEFSL(3) ;TIMECLOCK =FSL1;,16位定时/计数器的设计,- - 16位可预置计数器的设计 - P_count: PROCESS(FSL1)signal CNT3 : STD_LOGIC_VECTOR( 15 DOWNTO 0);BEGINIF TACLR=0 THEN CNT3:=“0000”ELSIF FSL1EVENT AND FSL1 = 1 THENIF(CNT3=“1111111111111111” THEN CNT3:= DATAIN;SETTAIFG=1;ELSECNT3 := CNT3+1;SETTAIFG=0;END IF;END IFDATAOUT=CNT3; END PROCESS P_count ; - END ARCHITECTURE BEHAV OF TIME16 -END-,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号