数字系统设计与PLD应用
实验
实验名称:实验七 脉冲分配器 学 院:大数据与信息工程学院 专 业:电子信息工程 姓 名: 学 号:1108040 年 级:电信111 任课教师:尉学军
2014 年 12 月 15日
一、实验目的
1.学习脉冲分配器的设计方法。 2.掌握用VHDL语言描述脉冲分配器。
二、实验内容
1.按照图8-15和图8-16图8-17所描述的脉冲分配器,建立VHDL输入文件,调试,编译,观测运行结果。
三、实验原理、方法和手段
脉冲分配器是在时钟脉冲信号CLC的作用下,顺序的使每个输出端输出节拍脉冲,用以协调系统各部分的工作。图8-15为一个由3-8译码器和摸8计数器构成的脉冲分配器。摸8计数器的输出Q2Q1Q0在000~111之间循环变化,从而在译码器输出端Y0~Y1,分别的到如图8-16所示的负脉冲序列。
__
__
根据以上原理图可以构成各种长度,各种输出脉冲极性,宽度的脉冲分配器、并可建立图形输入文件。
图8-17给出另一个脉冲分配器的示意图和输出波形。
图中表面了该脉冲分配器分配路数为4,即每逢4个CP脉冲,重复分配一次,但P1、P2、P3、P4,每路输出不再是简单的轮流一次输出一个脉冲,而是输出多个,且脉冲宽度与CP的脉宽相一致。
该脉冲分配器可用VHDL语言来描述,若分配器数为n个状态的状态机来表示,
由此到场VHDL源程序。
图8-18给出一个更为复杂的脉冲分配器,其输出波形多样。但仍属脉冲分配器的范畴。请理解并设计。
四、实验结果及结果分析
1.1图8-15波形的VHDL语言描述: library ieee;
use ieee.std_logic_11.all; entity fenpeiqi is port (clk:in std_logic;
Y0,Y1,Y2,Y3,Y4,Y5,Y6,Y7:out std_logic); end fenpeiqi;
architecture a of fenpeiqi is
type state_space is (s0,s1,s2,s3,s4,s5,s6,s7); signal state:state_space; begin
process(clk) begin
if(clk 'event and clk='1') then case state is when s0=>
state<=s1; when s1=>
state<=s2; when s2=>
state<=s3; when s3=>
state<=s4; when s4=>
state<=s5; when s5=>
state<=s6; when s6=>
state<=s7; when s7=> state<=s0; end case; end if; end process;
Y0<='0' WHEN state=s7 else'1';
Y1<='0' WHEN state=s0 else'1'; Y2<='0' WHEN state=s1 else'1'; Y3<='0' WHEN state=s2 else'1'; Y4<='0' WHEN state=s3 else'1';
Y5<='0' WHEN state=s4 else'1'; Y6<='0' WHEN state=s5 else'1'; Y7<='0' WHEN state=s6 else'1'; end a; 1.2波形仿真:
1.3结果分析: 观察波形图可知,
在S0状态时,Y7输出低电平, 在S1状态时,Y0输出低电平, 在S2状态时,Y1输出低电平, 在S3状态时,Y2输出低电平, 在S4状态时,Y3输出低电平, 在S5状态时,Y4输出低电平, 在S6状态时,Y5输出低电平,
在S7状态时,Y6输出低电平,并依次循环。
2.1图8-16波形的VHDL语言描述: library ieee;
use ieee.std_logic_11.all; entity fenpeiqi is
port (clk:in std_logic;
Y0,Y1,Y2,Y3:out std_logic); end fenpeiqi;
architecture a of fenpeiqi is
type state_space is (s0,s1,s2,s3); signal state:state_space; begin
process(clk) begin
if(clk 'event and clk='1') then case state is when s0=>
state<=s1; when s1=>
state<=s2; when s2=>
state<=s3; when s3=>
state<=s0;
end case; end if; end process;
Y0<='1' WHEN ((state=s0 or state=s1 or state=s3) and clk='1') else'0';
Y1<='1' WHEN (state=s1 and clk='1')else'0'; Y2<='1' when((state=s0 or state=s2)and clk='1') else'0'; Y3<='1' WHEN ((state=s1 or state=s2) and clk='1')else'0'; end a;
2.2仿真波形
2.3结果分析: 观察波形图可知,
在S1、S2状态时,Y3输出高电平。
在S0、S1、S 3状态时,Y0输出高电平。 在S2状态时,Y1输出高电平。
在S0、S2状态时,Y2输出高电平,并依次循环。
3.1图8-17波形的VHDL语言描述: library ieee;
use ieee.std_logic_11.all; entity fenpeiqi is
port (clk:in std_logic;
Z1,Z2,Z3,Z4,Z5:out std_logic); end fenpeiqi;
architecture a of fenpeiqi is
type state_space is (s0,s1,s2,s3,s4); signal state:state_space; begin
process(clk) begin
if(clk 'event and clk='1') then case state is when s0=>
state<=s1; when s1=>
state<=s2; when s2=>
state<=s3; when s3=>
state<=s4; when s4=>
state<=s0; end case; end if; end process;
Z1<='1' WHEN ((state=s0 or state=s3) and clk='0') else'0';
Z2<='1' WHEN ((state=s1 or state=s4) and clk='1')else'0'; Z3<='0' WHEN (state=s0 ) else'1';
Z4<='0' WHEN (state=s3 and clk='1') else'1'; Z5<='0' WHEN (state=s2 ) else'1'; end a;
3.2仿真波形:
3.3结果分析:
当在状态S0或者状态S3 ,且clk等于为低电平时,Z1为高电平。当在状态S1或者状态S4 ,且clk等于为高电平时,Z2为高电平。当在状态S0 ,Z3为底电平。
当在状态S3,且clk等于为高电平时 ,Z4为底电平。 当在状态S2 ,Z3为底电平。