JH5001二次开发实验指导书老师供综合设计参考Word格式文档下载.docx
《JH5001二次开发实验指导书老师供综合设计参考Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《JH5001二次开发实验指导书老师供综合设计参考Word格式文档下载.docx(60页珍藏版)》请在冰豆网上搜索。
LCELL;
Counter[7..0]:
DFF;
Mode[1..0]:
Counter_Out:
%studentspustdefinedvariablesathere%
Counter_Reset:
Counter_Out_Buff:
BEGIN
Main_CLK=MUX_CLK;
Mode[]=M_SEL[];
%
INPUT:
Main_CLK:
input256KHzclock
Mode[1..0]:
Controlcountermode
Counter_Out:
Counteroutput
function:
ifMode[]=0:
Counter_Out=Main_CLK/213;
ifMode[]=1:
Counter_Out=Main_CLK/187;
ifMode[]=2:
Counter_Out=Main_CLK/156;
ifMode[]=3:
Counter_Out=Main_CLK/15;
--studentsputhisprograminhere
CASEMode[]IS
WHEN0=>
Counter_Reset=(Counter[]==212);
WHEN1=>
Counter_Reset=(Counter[]==186);
WHEN2=>
Counter_Reset=(Counter[]==155);
WHEN3=>
Counter_Reset=(Counter[]==14);
ENDCASE;
Counter[].clk=Main_CLK;
CASE(Counter_Reset)IS
Counter[].d=Counter[]+1;
Counter[].d=0;
Counter_Out_Buff.clk=!
Main_CLK;
Counter_Out_Buff.d=(Counter[]<
106);
93);
78);
7);
Counter_Out=Counter_Out_Buff;
--fellowingprogramcan'
tberewriteable
m_test=Counter_Out;
--notusedpin
MUX_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序列的产生实验
mgeneratingsequence"
SUBDESIGNm
Main_CLK,Mode[1..0]:
Delay_m[6..0]:
m_Out:
All_Zero:
input256KHzclock
m_SEL[1..0]:
selectoutputmsequencetype
OUTPUT:
m_Out:
msequenceoutput
generatingmsequence
m_SEL[]=0:
msequencetypeis(13)
m_SEL[]=1:
msequencetypeis(23)
m_SEL[]=2:
msequencetypeis(103)
m_SEL[]=3:
msequencetypeis(203)
All_Zero=(Delay_m[]==0);
Delay_m[].clk=Main_CLK;
Delay_m[5..0].d=Delay_m[6..1];
CASEm_SEL[]IS
Delay_m6.d=Delay_m5$Delay_m4$All_Zero;
Delay_m6.d=Delay_m4$Delay_m3$All_Zero;
Delay_m6.d=Delay_m2$Delay_m1$All_Zero;
Delay_m6.d=Delay_m1$Delay_m0$All_Zero;
m_out=Delay_m6;
m_test=m_Out;
课程设计三、噪声信号的产生
noisegenerating"
SUBDESIGNNoise
%MUXinput%
MUX_DR,MUX_CLKR:
%PCMoutput%
DR_PCM:
FSR,BCLKR:
%moutput%
DR_m:
%SWoutput%
SW_Out[7..0]:
Delay_m[24..0]:
PCM_Count[3..0],DR_PCM:
%
input:
FSR:
PCMframeindication
BCLKR:
PCMdatainputclock
Output:
DR_PCM:
noisePCMcode
function:
thisprogramoutputnoisetoPCMdecoder
%msequencegenerating%
Delay_m[].clk=FSR;
Delay_m[23..0].d=Delay_m[24..1];
--200000011
Delay_m24.d=Delay_m3$Delay_m0$(Delay_m[]==0);
PCM_Count[].d=PCM_Count[]+1;
PCM_Count[].clk=BCLKR&
FSR;
PCM_COunt[].clrn=FSR;
DR_PCM.clk=!
BCLKR;
CASEPCM_Count[]IS
DR_PCM.d=Delay_m0;
DR_PCM.d=Delay_m1;
DR_PCM.d=Delay_m2;
DR_PCM.d=Delay_m3;
WHEN4=>
DR_PCM.d=Delay_m4;
WHEN5=>
DR_PCM.d=Delay_m5;
WHEN6=>
DR_PCM.d=Delay_m6;
WHEN7=>
DR_PCM.d=Delay_m7;
%fellowingprogramcan'
tbewriteable%
(DR_m,Frame_Ind)=((MUX_DR,MUX_CLKR)==0);
SW_Out[7..0]=Delay_m[7..0];
课程设计四、复接实验
FRAME"
%===========MUXplexdatadefining==============%
CONSTANTUW=B"
11100100"
CONSTANTDataA=h"
11"
CONSTANTDataB=h"
22"
SUBDESIGNFrame
%studentsdefinevariableinhere%
Count[4..0],load,Send_buff[7..0]:
Send_bit:
MUX_CLK:
inputmultiplex256KHzclock
SW[7..0]:
multiplexdata1--->
8bitswitchinformation
DataA:
multiplexdataAwhichisdefineasconstant
DataB:
multiplexdataBwhichisdefineasconstant
UW:
multiplexdataBwhichisdefineasconstant
output:
MUX_DT:
multiplexdataoutput
Frame_Int:
Frameindication
ultiplex
DataA,DataB,SW,UWiscombinedasoneoutputdatastream
%==========studentsprogramputhere=============%
%32bytecounterforperframeis32bit%
Count[].clk=MUX_CLK;
Count[].d=Count[]+1;
Frame_Ind=Count4;
%loadgenerating%
load.d=(Count[]==31)#(Count[]==7)#(Count[]==15)#(Count[]==23);
load.clk=!
MUX_CLK;
%loaddata%
Send_buff[].clk=load;
CASE(Count[4..3])IS
Send_Buff[].d=UW;
Send_Buff[].d=DataA;
Send_Buff[].d=DataB;
Send_Buff[].d=SW[];
%paralleltoserial%
CASECount[2..0]IS
Send_bit=Send_buff7;
Send_bit=Send_buff6;
Send_bit=Send_buff5;
Send_bit=Send_buff4;
Send_bit=Send_buff3;
Send_bit=Send_buff2;
Send_bit=Send_buff1;
Send_bit=Send_buff0;
MUX_DT.d=Send_bit;
MUX_DT.clk=!
%fellowingcan'
tberewriteable%
Error_ind=(FSX_PCM,BCLKT,DT_PCM,m_Sequence,Error_SEL[1..0],m_SEL[])==0;
m_test=GND;
课程设计五、帧同步实验
deframe"
%=========UWdefine===========%
SUBDESIGNDeFrame
%=============studentvariabledefine===============%
--serialtoparallel
stop_Buff[7..0]:
--loadword
Line_Count[4..0]:
Load_UW,UW_Buff[7..0]:
Load_DataA,DataA_Buff[7..0]:
load_DataB,DataB_Buff[7..0]:
load_SW,SW_Buff[7..0]:
%detectperiodcounter%
Period_Count[9..0]:
%synchronous%
NO_SYN,Reset:
Delay_NO_SYN[2..0]:
Loss_one_Clock,Hold_Count:
Error_Word_Count[4..0]:
Frame_ind:
MUX_DR:
multiplexdata
SW:
multiplexSW
multiplexdataUW
Frame_Ind:
receiverframeindication
demultiplex
DataA,DataB,SW,UWisextractedfrominputdatastream
%===============studentsprogramputhere==============%
%Clockformsequence%
Frame_ind.d=(Line_Count[]==0);
Frame_ind.clk=!
MUX_CLKR;
%serialtoparallel%
stop_Buff[7..1].d=stop_Buff[6..0];
stop_Buff0.d=MUX_DR;
stop_Buff[].clk=MUX_CLKR;
%loadword%
Line_Count[].d=Line_Count[]+1;
Line_Count[].clk=(MUX_CLKR&
!
Loss_one_Clock);
--loadUWword
load_UW.d=(Line_Count[]==7);
load_UW.clk=!
UW_buff[].d=stop_Buff[];
UW_buff[].clk=load_UW;
--loadDataA
load_DataA.d=(Line_Count[]==15);
load_DataA.clk=!
DataA_buff[].d=stop_Buff[];
DataA_buff[].clk=load_DataA;
--loadDataB
load_DataB.d=(Line_Count[]==23);
load_DataB.clk=!
DataB_buff[].d=stop_Buff[];
DataB_buff[].clk=load_DataB;
--loadSW
load_SW.d=(Line_Count[]==31);
load_SW.clk=!
SW_buff[].d=stop_Buff[];
SW_buff[].clk=load_SW;
SW_Out[]=SW_buff[];
%periodcounter%
Period_Count[].d=Period_Count[]+1;
--512frame
Period_Count[].clk=Load_UW;
NO_SYN.d=(Error_Word_Count[]>
30);
NO_SYN.clk=load_UW;
Reset.d=(period_Count[]==1);
Reset.clk=Load_UW;
%lossoneclockgenerating%
Delay_NO_SYN[2..0].clk=!
Delay_NO_SYN[2..1].d=Delay_NO_SYN[1..0];
Delay_NO_SYN0.d=NO_SYN;
Loss_one_Clock=(Delay_NO_SYN2$Delay_NO_SYN1)&
Delay_NO_SYN1;
%erorwordcounter%
Error_Word_Count[].clrn=!
Reset;
Error_Word_Count[].clk=!
load_UW;
Hold_Count=(Error_Word_Count[]==31);
CASE(Hold_Count,(UW_Buff[]==UW))IS
Error_Word_Count[].d=Error_Word_Count[]+1;
WHENOTHERS=>
Error_Word_Count[].d=Error_Word_Count[];
tbechange%
(DR_PCM,DR_m)=((FSR,BCLKR)==0)$(DataA_Buff[]==0)$(DataB_Buff[]==0);
课程设计六、扰码实验
Scrambler