当前位置:文档之家› m序列产生实验

m序列产生实验

m序列产生实验一、实验目的1、m序列产生的基本方法;2、m序列0状态消除的基本手段;二、实验仪器1、JH5001型通信原理实验箱一台;2、MaxplusII开发环境一台;3、JTAG下载电缆一根;4、CPLD下载板一块;5、微机一台;6、示波器一台;三、实验原理m序列产生电路在通信电路设计中十分重要,它广泛使用在扩频通信、信号产生、仪器仪表等等电路中。

m序列有时也称伪噪声(PN)或伪随机序列,在一段周期内其自相关性类似于随机二进制序列。

尽管伪噪声序列是确定的,但其具有很多类似随机二进制序列的性质,例如0和1的数目大致相同,将序列平移后和原序列的相关性很小。

PN序列通常由序列逻辑电路产生,一般是由一系列的两状态存储器和反馈逻辑电路构成。

二进制序列在时钟脉冲的作用下在移位寄存器中移动,不同状态的输出逻辑组合起来并反馈回第一级寄存器作为输入。

当反馈由独立的“异或”门组成(通常是这种情况),此时移位寄存器称为线性PN序列发生器。

如果线性移位寄存器在某些时刻到达零状态,它会永远保持零状态不变,因此输出相应地变为全零序列。

因为n阶反馈移位寄存器只有2n-1个非零状态,所以由n阶线性寄存器生成的PN序列不会超过2n-1个。

周期为2n-1的线性反馈寄存器产生的序列称为最大长度(ML)序列——m序列。

m 序列发生器的一般组成m 序列发生器一般组成如上图所示,它用n 级移位寄存器作为主支路,用若干级模2加法器作为各级移位寄存器的抽头形成线性反馈支路。

各抽头的系数hi 称为反馈系数,它必须按照某一个n 次本原多项式:∑==ni i i x h x h 0)(中的二进制系数来取值。

在伪序列发生模块中,可以根据本原多项式的系数,…..h 8、h 7、h 6、h 5、h 4、h 3、h 2、h 1、h 0产生m 序列,这些系数可表示8进制数(1代表相连抽头进入反馈回路,0代表该抽头不进入反馈回路),如:13、23、103、203四、 课题设计要求在输入时钟256KHz 的时钟作用下,可在外部跳线器的控制下改变产生不同的m 序列,在程序中定义的几个变量为:输入: Main_CLK :输入 256KHz 主时钟 M_Sel[1..0]:选择输出不同的m 序列当 Mode[]=0:本原多项式为13(8进制表示); 当 Mode[]=1:本原多项式为23(8进制表示); 当 Mode[]=2:本原多项式为103(8进制表示); 当 Mode[]=3:本原多项式为203(8进制表示);输出: M_Out :m 序列输出 说明:1、 M_Sel[1..0]与复接模块的m_sel0、m_sel1相连; M_Out 在测试点TPB01输出;五、 实验步骤1、将JH5001二次开发光盘内的基本程序m.tdf 及其它相关程序(在光盘的“2th\student_m ”子目录下)拷入机器内。

注意:这里面有基本的程序框架(变量定义、主程序入口),在m.acf 文件中所有定义不要改动,特别是管脚定义、器件定义,否则会损坏器件。

2、在MaxplusII开发环境下,打开工程文件m.tdf。

3、参照实验原理在m.tdf文件中完成m序列产生设计,并在计算机上完成仿真。

经老师检查合格后,进入下一步:在下载板上烧录相应的器件。

4、将下载电缆的JTAG接口与下载板的双排针相连,注意连接方向(如果连接反了的话,可能会损坏器件,在操作上需小心)。

下载板上的电源不能接反,其红线接+5V,黑线接地。

加电,在MaxplusII环境下完成对CPLD 的编程。

5、将JH5001复接模块上的UB01拔下,注意不要损伤管脚(该步骤一般最好由老师进行)。

6、将编程好的EPM7064器件插入实验箱上的UB01插座中进行功能检查。

若不正确,重返步骤1进行;若正确则实验完成。

7、实验完成后将原来的器件插回原座中,复原JH5001实验箱。

六程序源代码TITLE "m generating sequence";SUBDESIGN m(%pcm input%FSX_PCM,BCLKT,DT_PCM :INPUT;%m sequence%m_Sequence :INPUT;%SW input%SW[7..0] :INPUT;%control mode%Error_SEL[1..0] :INPUT;%MUX output%MUX_DT :OUTPUT;MUX_CLK :INPUT;Error_ind :OUTPUT;%Test m sequence%m_SEL[1..0] :INPUT;m_test :OUTPUT;Frame_Ind :OUTPUT;)V ARIABLEMain_CLK,Mode[1..0] :LCELL;Delay_m[6..0] :DFF;m_Out :LCELL;%students pust defined variables at here%All_Zero :LCELL; BEGINMain_CLK=MUX_CLK;Mode[]=M_SEL[];%INPUT:Main_CLK: input 256KHz clockm_SEL[1..0]: select output m sequence type OUTPUT:m_Out: m sequence outputfunction:generating m sequencem_SEL[]=0: m sequence type is (13)m_SEL[]=1: m sequence type is (23)m_SEL[]=2: m sequence type is (103)m_SEL[]=3: m sequence type is (203)%--students put his program inhereAll_Zero=(Delay_m[]==0);Delay_m[].clk=Main_CLK;Delay_m[5..0].d=Delay_m[6..1];CASE m_SEL[] ISWHEN 0 =>Delay_m6.d=Delay_m5 $ Delay_m4 $ All_Zero;WHEN 1 =>Delay_m6.d=Delay_m4 $ Delay_m3 $ All_Zero;WHEN 2 =>Delay_m6.d=Delay_m2 $ Delay_m1 $ All_Zero;WHEN 3 =>Delay_m6.d=Delay_m1 $ Delay_m0 $ All_Zero;END CASE;m_out=Delay_m6;--fellowing program can't be rewriteablem_test=m_Out;--not used pinMUX_DT=(FSX_PCM,BCLKT,DT_PCM,m_Sequence,SW[7..0],Error_SEL [1..0],MUX_CLK)==0;(Error_ind,Frame_Ind)=0;END;七实验小结通过这次实验了解到了如何产生m序列,以及在实验过程中如检查和排除错误,巩固了从理论方面学到的知识。

做这个实验必须要有的基础知识包括CPLD 的基本编程技术以及CPLD器件的基本结构、编程过程,通过这次实验也得到了一些额外的知识,希望在以后的学习中能带来帮助。

可变分频器实验一、实验目的1、可变分频器实现的基本方法;2、可变分频器的输出占空比的控制方法;二、实验仪器1、JH5001型通信原理实验箱一台;2、MaxplusII开发环境一台;3、JTAG下载电缆一根;4、CPLD下载板一块;5、微机一台;6、示波器一台;三、实验原理目前可变分频器大量使用在FPGA的电路设计中,它是一般电路设计不可缺少的组成部分,如频率合成器、时钟信号产生器、调制解调器的位定时恢复等电路。

下面给出一种可变分频器的实现方法:一般分频器是通过计数器完成,计数器的范围为0~(N-1),这里N为分频数。

当计数器达到(N-1)时,对计数器进行复位,进入下一轮计数。

通过改变N的大小,从而达到可变分频计数的目的,其结构如下图所示。

对于可变计数器的输出,一般尽量输出占空比为50%的方波信号。

这是通过判决电路实现的:当计数器计数小于N/2时输出为1,其它为0。

四、课题设计要求在输入时钟为256KHz时,可在外部跳线器的控制下改变分频比,在程序中定义的几个变量为:Main_CLK:输入256KHz 主时钟;Mode[1..0]:控制分频模式;Counter_Out:分频器输出;当Mode[]=0:分频比为213;当Mode[]=1:分频比为187;当Mode[]=2:分频比为156;当Mode[]=3:分频比为15;说明:1、Mode[1..0]与复接模块的m_sel0、m_sel1相连;2、Counter_Out在TPB01输出;五、实验步骤1、将JH5001二次开发光盘内的基本程序m.tdf及其它相关程序(在光盘的“2th\student_m”子目录下)拷入机器内。

注意:这里面有基本的程序框架(变量定义、主程序入口),在m.acf文件中所有定义不要改动,特别是管脚定义、器件定义,否则会损坏器件。

2、在MaxplusII开发环境下,打开工程文件Counter.tdf。

3、学生参照实验原理在Counter.tdf文件中完成可变分频器的设计,并在计算机上完成仿真。

经老师检查合格后,进入下一步:在下载板上烧录相应的器件。

4、将下载电缆的JTAG接口与下载板的双排针相连,注意连接方向(如果连接反了的话,可能会损坏器件,在操作上需小心)。

下载板上的电源不能接反,其红线接+5V,黑线接地。

加电,在MaxplusII环境下完成对CPLD 的编程。

5、将JH5001复接模块上的UB01拔下,注意不要损伤管脚(该步骤一般最好由老师进行)。

6、将编程好的EPM7064器件插入实验箱上的UB01插座中进行功能检查。

若不正确,重返步骤1进行。

若正确则实验完成。

7、实验完成后将原来的器件插回原座中,复原JH5001实验箱。

六学生用程序TITLE "Counter";SUBDESIGN Counter(%pcm input%FSX_PCM,BCLKT,DT_PCM :INPUT;%m sequence%m_Sequence :INPUT;%SW input%SW[7..0] :INPUT;%control mode%Error_SEL[1..0] :INPUT;%MUX output%MUX_DT :OUTPUT;MUX_CLK :INPUT;Error_ind :OUTPUT;%Test m sequence%m_SEL[1..0] :INPUT;m_test :OUTPUT;Frame_Ind :OUTPUT;)V ARIABLEMain_CLK :LCELL;Counter[7..0] :DFF;Mode[1..0] :LCELL;Counter_Out :LCELL;%students pust defined variables at here%Counter_Reset :LCELL;Counter_Out_Buff :DFF; BEGINMain_CLK=MUX_CLK;Mode[]=M_SEL[];%INPUT:Main_CLK: input 256KHz clockMode[1..0]: Control counter modeCounter_Out: Counter outputfunction:if Mode[]=0: Counter_Out=Main_CLK/213;if Mode[]=1: Counter_Out=Main_CLK/187;if Mode[]=2: Counter_Out=Main_CLK/156;if Mode[]=3: Counter_Out=Main_CLK/15;%--students put his program inhereCASE Mode[] ISWHEN 0 =>Counter_Reset=(Counter[]==212);WHEN 1 =>Counter_Reset=(Counter[]==186);WHEN 2 =>Counter_Reset=(Counter[]==155);WHEN 3 =>Counter_Reset=(Counter[]==14);END CASE;Counter[].clk=Main_CLK;CASE (Counter_Reset) ISWHEN 0 =>Counter[].d=Counter[]+1;WHEN 1 =>Counter[].d=0;END CASE;Counter_Out_Buff.clk=!Main_CLK;CASE Mode[] ISWHEN 0 =>Counter_Out_Buff.d=(Counter[]<106);WHEN 1 =>Counter_Out_Buff.d=(Counter[]<93);WHEN 2 =>Counter_Out_Buff.d=(Counter[]<78);WHEN 3 =>Counter_Out_Buff.d=(Counter[]<7);END CASE;Counter_Out=Counter_Out_Buff;七实验小结通过做可变分频器实验,深刻了解到了JH5001综合实验系统的实验方法,可变分频器实现的基本方法,可变分频器输出占空比的控制方法,在实验过程中了解到了输入与输出时钟的分频关系,还可以通过复接模块中的m_sel0、m_sel1的控制下改变分频比,希望在以后的学习中能给我带来帮助。

相关主题