FSKPSK信号产生器实验实验研究报告Word文档格式.docx
- 文档编号:18364811
- 上传时间:2022-12-15
- 格式:DOCX
- 页数:12
- 大小:83.28KB
FSKPSK信号产生器实验实验研究报告Word文档格式.docx
《FSKPSK信号产生器实验实验研究报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《FSKPSK信号产生器实验实验研究报告Word文档格式.docx(12页珍藏版)》请在冰豆网上搜索。
2.3跳变检测
将跳变检测引入正弦波的产生中,可以使每次基带码元上升沿或下降沿到来时,对应输出波形位于正弦波形的
处。
基带信号的跳变检测可以有很多方法,图3所示为一种便于在可编程逻辑器件中实现的方案。
图3信号跳变检测电路
2.4正弦信号的产生
用数字电路和DAC变换器可以产生要求的模拟信号。
根据抽样定理可知,当用模拟信号最大频率两倍以上的速率对该模拟信号采样时,便可将原模拟信号不失真地恢复出来。
本设计要求得到的是两个不同频率的正弦信号,其频率正好呈倍数关系。
设计中对1.2kHz的正弦波一个周期采样100个点,即采样速率为原正弦信号频率的100倍。
因此完全可以在接收端将原正弦信号不失真地恢复出来,从而可以在接收端对FSK信号正确地解调。
本设计中每个采样点采用8位量化编码,即8位分辨率。
采样点的个数与分辨率的大小主要取决于FPGA器件的容量,其中分辨率的高低还与DAC的位数有关。
本设计中,数字基带信号与FSK调制信号的对应关系为:
“0”对应1.2kHz,“1”对应2.4kHz。
具体的正弦波信号产生器可以用查找表来实现。
按前面的设计思想,本方案需要设计有100个单元的查找表,其中每个单元分别保存100个正弦波采样的对应样值。
当码元由1变为0时,为了产生1.2kHz的正弦信号,只需要将查找表中的内容逐一读出即可,直到将查找表中所有单元读取完毕,然后再从第一单元开始读取。
这样,每个码元周期内将输出一个周期的正弦波信号。
当码元由0变为1时,为了产生2.4kHz的正弦信号,就不能逐一读取所有单元了,而要每隔一个单元读取一个样值。
这样,在每个码元周期内就会对整个查找表读取两次,即输出两个周期2.4kHz的正弦波信号。
上面提到设计中要用到查找表,下面将介绍ALTERA器件中查找表的生成方法。
在QuartusII软件中,按NEW按钮,将弹出NEW对话框,在该对话框中按下OTHERFILES按钮,在列表里选中MEMORYINITIALIZATIONFILE,然后按OK按钮,即打开MIF文件编辑器,此时会出现对话框提示输入查找表深度及每个单元的数据宽度信息,例如本设计中深度为100,宽度为8,设置完毕按OK进入MIF文件编辑器。
在这里可以输入每个数据单元的值,本设计中要输入一个整周期内100个采样点的值,输入完毕以适当的文件名保存。
完成上述的步骤仅仅是生成了产生查找表所需要的.MIF文件,而查找表要通过调用芯片内的RAM资源来生成,并将其例化成一个ROM元件,其具体过程不在此赘述。
三、2FSK/2PSK信号产生器
在2FSK的基础上,可以较容易地设计2PSK信号产生器。
在检测到基带码元的上升沿或下降沿时,使输出波形相位跳变
即可,即在跳变沿处修改查找表地址指针,使地址指针加“50”并对结果模100,得到的即是倒相后的波形样值地址。
设计要求可通过一个按键控制信号产生器输出2FSK或2PSK信号。
2FSK/2PSK信号产生器的外部接口如图4所示:
图42FSK/2PSK信号产生器的外部接口
(二)功能仿真波形
2FSK/2PSK的总体波形如下图5所示,其中CLOCK为正弦波发生器时钟MODE表示0:
2FSK;
1:
2PSK,CLK120为用于产生一个1.2kHz的正弦波信号,CLK240为用于产生一个2.4kHz的正弦波信号,VALUE为正弦波的采样点峰值,M_MODE为输出m序列。
图5
下图6所示为产生的2FSK,可以明显地看到在M_MODE跳变前后VALUE的码元宽度相差一倍,实现了FSK的频率变化传递数字信息,即120kHz表示信号“0”,240kHz表示信号“1”。
图6
下图7可以看出传递信号“1”的波形密度明显比传递信号“0”的波形密度高。
图7
2PSK的信号传递频率从下图8中可以看出为240kHz,信号“1”和“0”的跳变是通过相位的改变来实现的。
图8
(三)VHDL代码
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.all;
USEIEEE.std_logic_unsigned.all;
USEIEEE.std_logic_arith.all;
ENTITYPSKFSKIS
PORT(CLOCK:
INSTD_LOGIC;
--正弦波发生器时钟
MODE:
--0:
FSK;
PSK
CLK240:
bufferSTD_LOGIC;
--用于产生一个2.4kHz的正弦波信号
CLK120:
--用于产生一个1.2kHz的正弦波信号
VALUE:
outstd_logic_vector(7DOWNTO0);
--正弦波的采样点峰值
M_CODE:
BUFFERSTD_LOGIC);
--输出m序列
ENDPSKFSK;
ARCHITECTUREPSKFSK_ARCHOFPSKFSKIS
SIGNALCOUNT100:
INTEGERRANGE0TO99;
--记录100个状态
SIGNALCOUNT50:
INTEGERRANGE0TO49;
--记录50个状态
SIGNALCOUNT:
INTEGERRANGE1TO10;
--记录10个状态,实现12M分频到240kHz得到CLK240时钟信号
SIGNALSINCLK,CODERATE:
STD_LOGIC;
--正弦波信号的频率以及随机序列的编码速率
SIGNALTEMP,JUMP_HIGH,JUMP_LOW:
--0,1跳变标志
SIGNALM:
std_logic_vector(2DOWNTO0);
--m序列
-------------------------------------------------------------------
BEGIN
PROCESS(CLOCK)--分频为240KHz的CLK240信号
BEGIN
IF(CLOCK'
EVENTANDCLOCK='
1'
)THEN
IF(COUNT=10)THEN
COUNT<
=1;
--计数满时计数回复初值
CLK240<
=NOTCLK240;
--输出时钟翻转一次
ELSIF(COUNT=5)THEN
=COUNT+1;
CLK240<
=NOTCLK240;
--输出时钟翻转一次
ELSECOUNT<
ENDIF;
ENDPROCESS;
PROCESS(CLK240)--分频为120KHz的CLK120信号
IF(CLK240'
EVENTANDCLK240='
CLK120<
=NOTCLK120;
PROCESS(CLK120)--LOAD_CLK1100分频得到CODERATE码元速率1.2kHz
IF(CLK120'
EVENTANDCLK120='
)THEN
IF(COUNT50=49)THEN
COUNT50<
=0;
CODERATE<
=NOTCODERATE;
ELSECOUNT50<
=COUNT50+1;
M_SEQUENCE_FORM:
--产生"
1110010"
m序列
PROCESS(CODERATE)
IF(CODERATE'
EVENTANDCODERATE='
M(0)<
=M
(1);
--实现移位功能
M
(1)<
=M
(2);
M
(2)<
=(M
(1)XORM(0))OR(NOT(M(0)ORM
(1)ORM
(2)));
--逻辑表达式跟上面的移位功能产生m的随机序列“1110010”
M_CODE<
=M(0);
PROCESS(MODE,CLK240,CLK120,M_CODE)
IF(MODE='
0'
ANDM_CODE='
)THENSINCLK<
=CLK120;
ELSESINCLK<
=CLK240;
--选择正弦信号波产生器的时钟频率
JUMP_HIGH<
=(NOTTEMP)ANDM_CODE;
--0到1跳变
JUMP_LOW<
=(NOTM_CODE)ANDTEMP;
--1到0跳变
PROCESS(SINCLK)--2FSK与2PSK对跳变的不同处理
IF(SINCLK'
EVENTANDSINCLK='
TEMP<
=M_CODE;
IF((COUNT100=99)OR(JUMP_HIGH='
))THENCOUNT100<
--波形输出
ELSIF((JUMP_LOW='
)AND(MODE='
=50;
ELSECOUNT100<
=COUNT100+1;
PROCESS(COUNT100)--产生sin周期波形的1个周期内的100个样点值
CASECOUNT100IS
when0=>
value<
="
01111111"
;
when1=>
10000111"
when2=>
10001111"
when3=>
10010111"
when4=>
10011111"
when5=>
10100110"
when6=>
10101110"
when7=>
10110101"
when8=>
10111100"
when9=>
11000011"
when10=>
11001010"
when11=>
11010000"
when12=>
11010110"
when13=>
11011100"
when14=>
11100001"
when15=>
11100110"
when16=>
11101011"
when17=>
11101111"
when18=>
11110010"
when19=>
11110110"
when20=>
11111000"
when21=>
11111010"
when22=>
11111100"
when23=>
11111101"
when24=>
11111110"
when25=>
11111111"
when26=>
when27=>
when28=>
when29=>
when30=>
when31=>
when32=>
when33=>
when34=>
when35=>
when36=>
when37=>
when38=>
when39=>
when40=>
when41=>
when42=>
when43=>
when44=>
when45=>
when46=>
when47=>
when48=>
when49=>
when50=>
when51=>
01110111"
when52=>
01101111"
when53=>
01100111"
when54=>
01011111"
when55=>
01011000"
when56=>
01010000"
when57=>
01001001"
when58=>
01000010"
when59=>
00111011"
when60=>
00110100"
when61=>
00101110"
when62=>
00101000"
when63=>
00100010"
when64=>
00011101"
when65=>
00011000"
when66=>
00010011"
when67=>
00001111"
when68=>
00001100"
when69=>
00001000"
when70=>
00000110"
when71=>
00000100"
when72=>
00000010"
when73=>
00000001"
when74=>
00000000"
when75=>
when76=>
when77=>
when78=>
when79=>
when80=>
when81=>
when82=>
when83=>
when84=>
when85=>
when86=>
when87=>
when88=>
when89=>
when90=>
when91=>
when92=>
when93=>
when94=>
when95=>
when96=>
when97=>
when98=>
when99=>
whenothers=>
NULL;
ENDCASE;
ENDPSKFSK_ARCH;
(四)实验总结
在这个实验中,需要输入一个整周期内100个采样点的值,没有利用查找表的方法实现,而是直接在程序中输入100个采样点的值。
2FSK/2PSK主要包括两部分2FSK信号发生器和2PSK信号发生器。
2FSK信号发生器主要有分频器,m序列产生器,跳变检测,正弦信号发生器和DAC几个部分组成。
2FSK的关键是通过判断信号跳变是来改变频率的变化,2PSK的关键是通过信号的跳变来改变相位的变化。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- FSKPSK 信号 产生器 实验 研究 报告