JH5001二次开发实验指导书老师供综合设计参考.docx

上传人:b****4 文档编号:4877515 上传时间:2022-12-11 格式:DOCX 页数:60 大小:29.18KB
下载 相关 举报
JH5001二次开发实验指导书老师供综合设计参考.docx_第1页
第1页 / 共60页
JH5001二次开发实验指导书老师供综合设计参考.docx_第2页
第2页 / 共60页
JH5001二次开发实验指导书老师供综合设计参考.docx_第3页
第3页 / 共60页
JH5001二次开发实验指导书老师供综合设计参考.docx_第4页
第4页 / 共60页
JH5001二次开发实验指导书老师供综合设计参考.docx_第5页
第5页 / 共60页
点击查看更多>>
下载资源
资源描述

JH5001二次开发实验指导书老师供综合设计参考.docx

《JH5001二次开发实验指导书老师供综合设计参考.docx》由会员分享,可在线阅读,更多相关《JH5001二次开发实验指导书老师供综合设计参考.docx(60页珍藏版)》请在冰豆网上搜索。

JH5001二次开发实验指导书老师供综合设计参考.docx

JH5001二次开发实验指导书老师供综合设计参考

 

JH5001二次开发参考程序

(以下所有程序均调试通过,可作为编程参考)

 

二OO三年一月

课程设计一、可变分频器的实验

TITLE"Counter";

SUBDESIGNCounter

%pcminput%

FSX_PCM,BCLKT,DT_PCM:

INPUT;

%msequence%

m_Sequence:

INPUT;

%SWinput%

SW[7..0]:

INPUT;

%controlmode%

Error_SEL[1..0]:

INPUT;

%MUXoutput%

MUX_DT:

OUTPUT;

MUX_CLK:

INPUT;

Error_ind:

OUTPUT;

%Testmsequence%

m_SEL[1..0]:

INPUT;

m_test:

OUTPUT;

Frame_Ind:

OUTPUT;

VARIABLE

Main_CLK:

LCELL;

Counter[7..0]:

DFF;

Mode[1..0]:

LCELL;

Counter_Out:

LCELL;

%studentspustdefinedvariablesathere%

Counter_Reset:

LCELL;

Counter_Out_Buff:

DFF;

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

WHEN0=>

Counter[].d=Counter[]+1;

WHEN1=>

Counter[].d=0;

ENDCASE;

Counter_Out_Buff.clk=!

Main_CLK;

CASEMode[]IS

WHEN0=>

Counter_Out_Buff.d=(Counter[]<106);

WHEN1=>

Counter_Out_Buff.d=(Counter[]<93);

WHEN2=>

Counter_Out_Buff.d=(Counter[]<78);

WHEN3=>

Counter_Out_Buff.d=(Counter[]<7);

ENDCASE;

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序列的产生实验

TITLE"mgeneratingsequence";

SUBDESIGNm

%pcminput%

FSX_PCM,BCLKT,DT_PCM:

INPUT;

%msequence%

m_Sequence:

INPUT;

%SWinput%

SW[7..0]:

INPUT;

%controlmode%

Error_SEL[1..0]:

INPUT;

%MUXoutput%

MUX_DT:

OUTPUT;

MUX_CLK:

INPUT;

Error_ind:

OUTPUT;

%Testmsequence%

m_SEL[1..0]:

INPUT;

m_test:

OUTPUT;

Frame_Ind:

OUTPUT;

VARIABLE

Main_CLK,Mode[1..0]:

LCELL;

Delay_m[6..0]:

DFF;

m_Out:

LCELL;

%studentspustdefinedvariablesathere%

All_Zero:

LCELL;

BEGIN

Main_CLK=MUX_CLK;

Mode[]=M_SEL[];

%

INPUT:

Main_CLK:

input256KHzclock

m_SEL[1..0]:

selectoutputmsequencetype

OUTPUT:

m_Out:

msequenceoutput

function:

generatingmsequence

m_SEL[]=0:

msequencetypeis(13)

m_SEL[]=1:

msequencetypeis(23)

m_SEL[]=2:

msequencetypeis(103)

m_SEL[]=3:

msequencetypeis(203)

%

--studentsputhisprograminhere

All_Zero=(Delay_m[]==0);

Delay_m[].clk=Main_CLK;

Delay_m[5..0].d=Delay_m[6..1];

CASEm_SEL[]IS

WHEN0=>

Delay_m6.d=Delay_m5$Delay_m4$All_Zero;

WHEN1=>

Delay_m6.d=Delay_m4$Delay_m3$All_Zero;

WHEN2=>

Delay_m6.d=Delay_m2$Delay_m1$All_Zero;

WHEN3=>

Delay_m6.d=Delay_m1$Delay_m0$All_Zero;

ENDCASE;

m_out=Delay_m6;

--fellowingprogramcan'tberewriteable

m_test=m_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;

课程设计三、噪声信号的产生

TITLE"noisegenerating";

SUBDESIGNNoise

%MUXinput%

MUX_DR,MUX_CLKR:

INPUT;

%PCMoutput%

DR_PCM:

OUTPUT;

FSR,BCLKR:

INPUT;

%moutput%

DR_m:

OUTPUT;

Frame_Ind:

OUTPUT;

%SWoutput%

SW_Out[7..0]:

OUTPUT;

VARIABLE

Delay_m[24..0]:

DFF;

PCM_Count[3..0],DR_PCM:

DFF;

BEGIN

%

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);

%PCMoutput%

PCM_Count[].d=PCM_Count[]+1;

PCM_Count[].clk=BCLKR&FSR;

PCM_COunt[].clrn=FSR;

DR_PCM.clk=!

BCLKR;

CASEPCM_Count[]IS

WHEN0=>

DR_PCM.d=Delay_m0;

WHEN1=>

DR_PCM.d=Delay_m1;

WHEN2=>

DR_PCM.d=Delay_m2;

WHEN3=>

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;

ENDCASE;

%fellowingprogramcan'tbewriteable%

(DR_m,Frame_Ind)=((MUX_DR,MUX_CLKR)==0);

SW_Out[7..0]=Delay_m[7..0];

END;

课程设计四、复接实验

TITLE"FRAME";

%===========MUXplexdatadefining==============%

CONSTANTUW=B"11100100";

CONSTANTDataA=h"11";

CONSTANTDataB=h"22";

SUBDESIGNFrame

%pcminput%

FSX_PCM,BCLKT,DT_PCM:

INPUT;

%msequence%

m_Sequence:

INPUT;

%SWinput%

SW[7..0]:

INPUT;

%controlmode%

Error_SEL[1..0]:

INPUT;

%MUXoutput%

MUX_DT:

OUTPUT;

MUX_CLK:

INPUT;

Error_ind:

OUTPUT;

%Testmsequence%

m_SEL[1..0]:

INPUT;

m_test:

OUTPUT;

Frame_Ind:

OUTPUT;

VARIABLE

%studentsdefinevariableinhere%

Count[4..0],load,Send_buff[7..0]:

DFF;

MUX_DT:

DFF;

Send_bit:

LCELL;

BEGIN

%

INPUT:

MUX_CLK:

inputmultiplex256KHzclock

SW[7..0]:

multiplexdata1--->8bitswitchinformation

DataA:

multiplexdataAwhichisdefineasconstant

DataB:

multiplexdataBwhichisdefineasconstant

UW:

multiplexdataBwhichisdefineasconstant

output:

MUX_DT:

multiplexdataoutput

Frame_Int:

Frameindication

function:

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

WHEN0=>

Send_Buff[].d=UW;

WHEN1=>

Send_Buff[].d=DataA;

WHEN2=>

Send_Buff[].d=DataB;

WHEN3=>

Send_Buff[].d=SW[];

ENDCASE;

%paralleltoserial%

CASECount[2..0]IS

WHEN0=>

Send_bit=Send_buff7;

WHEN1=>

Send_bit=Send_buff6;

WHEN2=>

Send_bit=Send_buff5;

WHEN3=>

Send_bit=Send_buff4;

WHEN4=>

Send_bit=Send_buff3;

WHEN5=>

Send_bit=Send_buff2;

WHEN6=>

Send_bit=Send_buff1;

WHEN7=>

Send_bit=Send_buff0;

ENDCASE;

MUX_DT.d=Send_bit;

MUX_DT.clk=!

MUX_CLK;

%fellowingcan'tberewriteable%

Error_ind=(FSX_PCM,BCLKT,DT_PCM,m_Sequence,Error_SEL[1..0],m_SEL[])==0;

m_test=GND;

END;

课程设计五、帧同步实验

TITLE"deframe";

%=========UWdefine===========%

CONSTANTUW=B"11100100";

SUBDESIGNDeFrame

%MUXinput%

MUX_DR,MUX_CLKR:

INPUT;

%PCMoutput%

DR_PCM:

OUTPUT;

FSR,BCLKR:

INPUT;

%moutput%

DR_m:

OUTPUT;

Frame_Ind:

OUTPUT;

%SWoutput%

SW_Out[7..0]:

OUTPUT;

VARIABLE

%=============studentvariabledefine===============%

--serialtoparallel

stop_Buff[7..0]:

DFF;

--loadword

Line_Count[4..0]:

DFF;

Load_UW,UW_Buff[7..0]:

DFF;

Load_DataA,DataA_Buff[7..0]:

DFF;

load_DataB,DataB_Buff[7..0]:

DFF;

load_SW,SW_Buff[7..0]:

DFF;

%detectperiodcounter%

Period_Count[9..0]:

DFF;

%synchronous%

NO_SYN,Reset:

DFF;

Delay_NO_SYN[2..0]:

DFF;

Loss_one_Clock,Hold_Count:

LCELL;

Error_Word_Count[4..0]:

DFF;

Frame_ind:

DFF;

BEGIN

%

INPUT:

MUX_CLK:

inputmultiplex256KHzclock

MUX_DR:

multiplexdata

output:

DataA:

multiplexdataAwhichisdefineasconstant

DataB:

multiplexdataBwhichisdefineasconstant

SW:

multiplexSW

UW:

multiplexdataUW

Frame_Ind:

receiverframeindication

function:

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=!

MUX_CLKR;

UW_buff[].d=stop_Buff[];

UW_buff[].clk=load_UW;

--loadDataA

load_DataA.d=(Line_Count[]==15);

load_DataA.clk=!

MUX_CLKR;

DataA_buff[].d=stop_Buff[];

DataA_buff[].clk=load_DataA;

--loadDataB

load_DataB.d=(Line_Count[]==23);

load_DataB.clk=!

MUX_CLKR;

DataB_buff[].d=stop_Buff[];

DataB_buff[].clk=load_DataB;

--loadSW

load_SW.d=(Line_Count[]==31);

load_SW.clk=!

MUX_CLKR;

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;

%synchronous%

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=!

MUX_CLKR;

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

WHEN0=>

Error_Word_Count[].d=Error_Word_Count[]+1;

WHENOTHERS=>

Error_Word_Count[].d=Error_Word_Count[];

ENDCASE;

%fellowingprogramcan'tbechange%

(DR_PCM,DR_m)=((FSR,BCLKR)==0)$(DataA_Buff[]==0)$(DataB_Buff[]==0);

END;

课程设计六、扰码实验

TITLE"Scrambler

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1