文档详情

时钟控制器的设计.doc

发布:2017-04-20约3.2千字共10页下载文档
文本预览下载声明
时钟控制器的设计实验 江新远 一.实验内容及要求 实验目的 熟悉并掌握同步时序电路设计的时钟控制器的方法。 设计任务 设计一个能放过一串数目可预订的完整无缺的时钟控制器,放过的脉冲数目N=1~15可调,要求: 用常规器件实现,所给器件为“3”中所述。 用可编程器件FPGA实现,用原理图或VHDL语言实现电路功能。 参考器件 FPGA芯片,下载器 1只,七段字型译码器(74LS48)1只,led灯若干。 实验要求 设计电路,然后在仿真软件上进行虚拟实验,正确后,在实验板上搭建实验电路,现在数码管上观察显示数字是否正确,然后搭建动态观察时的电路,在示波器上观察并记录输入、输出波形,最后一步是撰写实验报告及整理文档,对实验进行总结。 二.设计过程: 实验原理图如图所示 图中,时钟φ为1kHz/1Hz脉冲源,k1~k4为0-1开关,为单次脉冲,低电平有效。兼有??零、预置及启动功能。时钟控制器输出Z平时处于低电平状态。为了检测该电路的功能,即放过的脉冲数是否为预定值,可采用两种方法:一种方法是将输出Z接至LED显示器,观察LED闪烁的次数;另一种方法是将Z接至十六进制计数器的时钟端,计数器的输出接译码、显示电路,以观察显示器的读数是否正确。如果控制器中的计数器选用加法计数,可将预置数的反码打入预置端,如果选用减法计数,可将预置数的原码打入预置端。 从图中可以看到,设计时钟控制器,关键是要设计一个启停电路,即产生一个门控信号,如图中虚线所示的Q波形。当启动时,其负脉冲将系统复位,并对计数器进行预置,负脉冲结束后的下一个时钟的上升沿到来时,启停电路开启,Q由01,与此同时,计数器开始计数。当计数值与预置值相等时,启停电路关闭,Q由10,这时,计数器停止计数,根据Q与φ的时间关系,通过简单的控制逻辑,即可实现预期的时钟控制的目的。 如果要用示波器动态观察Q和Z的波形,还需要对原电路进行改动,所以,设计的电路包括两部分,即静态观察时的电路和动态观察时的电路。 输出时钟脉冲数可控的时钟控制器VHDL语言描述 输出时钟脉冲数可控的时钟控制器VHDL语言描述的 设计流程如图所示: 顶层电路图 三:实验仿真 静态演示实验代码: library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity wavecontrol is port ( -- Input ports clk : in std_logic; data0 : in std_logic; data1 : in std_logic; data2 : in std_logic; data3 : in std_logic; reset: in std_logic; -- Output ports gate: out std_logic; z: out std_logic; q:buffer std_logic_vector(3 downto 0) ); end wavecontrol; architecture one of wavecontrol is signal tem_data:std_logic_vector(3 downto 0); signal tem_gate:std_logic; begin process(clk) begin if(clkevent and clk=1)then if(reset=0)then --如果清零端为有效,置数切计数清零 tem_data(0)=data0;--数据输入 tem_data(1)=data1; tem_data(2)=data2; tem_data(3)=data3; q=0000; tem_gate=0;--gate无效 else tem_gate=1;--否则门开启 if(qtem_data)then q=q+1; else tem_gate=0;--如果计数超过预置数门关闭 end if; end if; end if; end process; z=tem_gate and clk; gate=tem_gate; end one; 功能仿真结果: 动态演示过程: 把reset调为q计数结束后自动清零,让数据自动重复输入,以便于在示波器上显示。同时将gate与z进行双踪示波。 修改后的代码: library ieee; use ieee.s
显示全部
相似文档