1、多路波形发生器地设计北京交通大学电工电子教学基地实验报告实验课程: EDA技术 实验名称: 多路波形发生器的设计 实验台:1号 班级:四班 学号:08291123 姓名:游振南实验日期:2010年10月24日 成绩: 一实验内容及其目的:1 熟悉多路发生器的原理还有输出相位差和占空比的原理。2 熟练用QUARTERII进行电路的编程和仿真。3 熟练使用IF语句。二实验设计思路.1。多路发生器的原理用分频器而且是可调的因此先设div:integer range 1 to 4;。通过信号赋值(tmp,tmp1,tmp2)赋给输出信号A,B,C. 通过n改变输出频率。定义各个变量。2.。当reset
2、b=0时,countQ=0;当resetb=1时。给脉冲时先定义分频比如果countQ (6*div-1)时countQ = countQ +1;否者countQ为0。4 当cltr=01时即H:L=1:1时1 如果countQ 3*div时tmp=0;否者tmp=12 如果countQ (6*div-2)时tmp1= 1;否者 tmp1=0;3 如果countQ (4*div-1)时tmp2= 0;4 否者 tmp2=1;5 A等于tmp;B=tmp2;C=tmp3;同理:当cltr=10时即H:L=1:2时 当cltr=11时即H:L=2:1时。其中;公式推导如下:当div=1,cltr=
3、01时 当div=2,cltr=01时 countQ6 countQ12A:0 0 0 1 1 1; A:0 0 0 0 0 0 1 1 1 1 1 1B:1 1 0 0 0 1; B:1 1 1 1 0 0 0 0 0 0 1 1C:0 1 1 1 0 0; C:0 0 1 1 1 1 1 1 0 0 0 0A:countQ3时tmp=0 A;countQ6时tmp=0Else tmp=1 Else tmp=1B:countQ4时tmp=1 B:countQ10 ,tmp=1 Else tmp=0 Else tmp=0C:countQ3时tmp=0 C: countQ7时tmp=0Else
4、tmp=1 Else tmp=1同理:cltr=10,cltr=11.当cltr=01时if(countQ 3*div) then tmp= 0;else tmp=1;if(countQ (6*div-2) then tmp1= 1;else tmp1=0;if(countQ (4*div-1) then tmp2= 0;else tmp2=1;当cltr=10时if(countQ 4*div) then tmp= 0;else tmp=1;if(countQ 2*div ) then tmp1= 1;else tmp1=0;if(countQ (4*div-1) then tmp2= 0;
5、else tmp2=1;当cltr=11时if(countQ 2*div) then tmp= 0;else tmp=1;if(countQ (4*div-1) then tmp1= 1;else tmp1=0;if(countQ 4*div ) then tmp2= 1;else tmp2=0;将信号tmp 赋给A ; tmp1 赋给B ; tmp2 赋给 C ;三流程图:四程序及仿真波形:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;
6、entity boxing isport(clk,resetb: in std_logic;cltr:in std_logic_vector(1 downto 0);div:integer range 1 to 4;A,B,C:out std_logic);end boxing;architecture a of boxing issignal countQ: integer range 0 to 255;signal tmp:std_logic;signal tmp1:std_logic;signal tmp2:std_logic;begin process(clk,resetb) begi
7、n if clkevent and clk=1 then if (resetb=0) then countQ=0; else if( countQ (6*div-1) then countQ = countQ +1; else countQ =0; end if; end if; end if; end process;process(cltr,countQ)beginif(cltr=01) then if(countQ 3*div) then tmp= 0;else tmp=1;end if;if(countQ (6*div-2) then tmp1= 1;else tmp1=0;end i
8、f;if(countQ (4*div-1) then tmp2= 0;else tmp2=1;end if;end if;if(cltr=10) thenif(countQ 4*div) then tmp= 0;else tmp=1;end if;if(countQ 2*div ) then tmp1= 1;else tmp1=0;end if;if(countQ (4*div-1) then tmp2= 0;else tmp2=1;end if;end if;if(cltr=11) thenif(countQ 2*div) then tmp= 0;else tmp=1;end if;if(c
9、ountQ (4*div-1) then tmp1= 1;else tmp1=0;end if;if(countQ 4*div ) then tmp2= 1;else tmp2=0;end if;end if;end process;A=tmp;B=tmp1;C=tmp2;end a;仿真图:div=1,cltr=01时div=1,cltr=10div=1,cltr=11div=2,cltr=01div=2,cltr=10div=2,cltr=11div=3,cltr=01div=3,cltr=10div=3,cltr=11div=4,cltr=01div=4,cltr=10div=4,clt
10、r=11五实验中遇到的问题及解决步骤1. 定义div为变量?div:integer range 1 to 42占空比原理?通过网络查找相关定义和通过网络和图书馆查找6分频分频器汇编中设定占空比推出相关频率的占空比。3通过控制div(14)改变输出相应得分频?开始时只能编写6分频的分频器无法通过改变div改变输出频率。通过助教老师的讲解通过设置div为变量把六分频分频器中的公式变换即可。4A,B,C,输出三路相位差120的意思?通过网上查找A,B,C 输出三路占空比一样延迟2/3T(T:分频后的周期)。5Process()中应该填写什么?开始时不知道填写什么。后来通过看书中的程序知道里面填写的是要输入的信号。.6A,B,C通过什么控制三路相差120度?首先想到通过控制时间延迟为20ns和40ns发现如果clk一个脉冲时间变化就会导致波形不一样而且分频不一样导致延迟时间不一样。然后想到通过一个一个的把波形用高低电平。通过给一个脉冲,控制cltr,div观察输出A,B,C的电平可是编写这样太麻烦了。后来通过观察A,B,C每一个脉冲的输出电平找出其规律通过公式编写从而使汇编变得简单些。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1