PPM调制解调

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

摘要
PPM技术具有编码简单、传输效率高等优点,在对潜通信和空间光通信中获得了广泛的应用。

VHDL的宽范围描述能力使它成为高层次设计的核心,不仅可以用简洁明确的代码描述来进行复杂控制逻辑的设计,而且也便于设计结果的保存和重用。

本文主要利用VHDL语言完成了PPM 调制解调器的FPGA设计,该系统主要包括串并转换、计数器、比较器、窄脉冲成形器、脉冲恢复、脉冲定位、脉冲整形、并串转换等模块,并利用QuartusII 软件进行仿真,波形仿真结果表明本设计的有效性,最后在FPGA芯片中进一步验证了设计的正确性。

设计的系统能够有效地实现PPM调制解调的功能。

关键词:脉冲位置调制;FPGA;VHDL;QuartusII
ABSTRACT
PPM technology’s advantages are simple coding and high transmission efficiency. It has been widely used in the fields of submarine communication and space optical communications. VHDL description of a wide range of capabilities makes it a core of high-level design,it can be used not only clear and concise description of the code to perform complex control logic design, but also be easy to save and reuse design results. this paper mainly use the language of VHDL to complete the PPM modem FPGA design. The system includes string and conversion, counters, comparators, forming a narrow pulse, pulse recovery, pulse position, pulse shaping, and string conversion module, and it uses the QuartusII software to complete simulation, waveform simulation results show the effectiveness of the design, and in the FPGA chip further validate the correctness of the design finally. The system designed can effectively achieve the function of PPM modulation and demodulation.
Keywords: pulse position modulation; FPGA;VHDL;QuartusII
目录
摘要 (I)
ABSTRACT (II)
1. 绪论 (1)
1.1 PPM的研究背景和意义 (1)
1.2 PPM的研究现状 (1)
1.3 EDA技术简介 (1)
1.3.1 EDA技术基本特征 (1)
1.3.2 EDA工具 (2)
1.3.3硬件描述语言 (2)
1.3.4可编程逻辑器件 (2)
1.4 本文结构 (2)
2. PPM通信系统基本原理 (3)
2.1 PPM调制解调原理框图 (3)
2.2 PPM调制技术 (3)
2.3 PPM解调技术 (3)
3. PPM调制器的VHDL设计与仿真 (4)
3.1 PPM调制器的VHDL建模 (4)
3.2 PPM调制器的VHDL设计与实现 (4)
3.2.1 PPM调制器顶层设计 (4)
3.2.2串并转换 (5)
3.2.3计数器 (6)
3.2.4比较器 (7)
3.2.5脉冲成形器 (8)
3.3 PPM调制器波形仿真结果 (9)
4. PPM解调器的VHDL设计与仿真 (10)
4.1 PPM解调VHDL建模 (10)
4.2 PPM解调器的VHDL设计与实现 (10)
4.2.1 PPM解调器顶层设计 (10)
4.2.2窄脉冲恢复 (12)
4.2.3 脉冲定位 (12)
4.2.4 脉冲整形 (13)
4.2.5 并串转换 (14)
4.3 PPM解调器波形仿真图 (15)
5.PPM调制解调系统的FPGA实现 (17)
5.1 PPM调制解调器联合设计 (17)
5.2 FPGA实现 (18)
5.2.1 脉冲序列发生器 (18)
5.2.2 分频器 (19)
5.2.3 延时器 (23)
5.2.4硬件下载 (25)
5.2.5 Signal TapII观测结果 (25)
结论 (27)
致谢 (28)
参考文献 (29)
PPM调制解调器的FPGA设计与实现
1. 绪论
1.1 PPM的研究背景和意义
PPM(Pulse Position Modulation)是一种脉冲位置根据已调信号的变化而变化的调制方法。

即用不同时间位置的脉波来表达0与1。

脉冲位置调制可降低光辐射平均功率的要求,有效延长电源和激光器的工作寿命。

给定激光脉冲重复频率,则可用最小的光平均功率达到最高的数据传输率。

同时,解调时不需要人为的设置判决门限、对信道变化不敏感等特点在对潜通信和室内计算机红外无线通信等要求低平均功率传输信息的场合得到应用;而且其编码简单、传输效率高等优点广泛应用于光通信、超宽带移动通信等现代通信前沿技术领域。

将数字序列变换成脉冲序列共有三种基本调制方法:脉冲幅度调制、脉冲位置调制和脉冲周期调制。

其中脉冲位置调制(PPM)是利用脉冲的相对位置来调制的,因为它的脉冲幅度和宽度均保持不变,可以很简便的实现调制与解调。

PPM主要功能如下:对输入的数字信号进行调制得到窄脉冲信号以便在信道上传输;接收端对接收到的窄脉冲信号进行解调还原出原数字信号。

在FPGA 上实现的PPM调制解调系统与传统实现方法相比提高了设计效率和工作效率。

进入21世纪,光通信技术已经有了很大的进步,这是光电器件、光传输媒介、光通信系统以及网络应用等技术共同进步的结果。

PPM调制解调技术是无线光通信发展的关键技术之一,随着它的发展必将对通信行业产生巨大影响。

1.2 PPM的研究现状
1939年英国人A.H.里夫斯于提出脉码调制原理。

Pierce J. R最早提出脉冲位置调制,并且在空间光通信中得到应用。

脉冲位置调制(PPM)在二战中期已付之实用。

英国设菲尔德大学(The University of Sheffield)对应用于激光通信的调制技术进行深入分析,重点研究了PPM调制,并实现其硬件电路。

我国在这方面研究起步较晚,在2000年桂林电子工业学院的光通信系统试验中,对飞机与水下潜艇采用了PPM调制实现通信,PPM研究有了进一步发展。

PPM和OOK是光通信的常用技术,二进制振幅键控(OOK)是最容易实现的无线光通信系统的调制方式,但它是以牺牲功率利用率为代价的。

与二进制振幅键控(OOK)相比,PPM调制的光功率利用率和频带利用率更高。

确定激光脉冲重复频率,用PPM调制方式可以有效的提高数据传输率,对激光器发射功率的要求大大降低,给系统的设计带来了很大的方便。

因此PPM调制是目前最适合深空光通信的调制方式之一。

1.3 EDA技术简介
电子设计技术的是以EDA技术为核心,EDA是指以计算机为平台,主要辅助进行IC 设计、电子电路设计和PCB设计等。

离开EDA技术的支撑,完成超大规模集成电路的设计是难以想象的。

相反,不断进步的生产制造技术将会对EDA技术提出更高的要求。

1.3.1 EDA技术基本特征
设计人员依据“自顶向下”的设计思想,对系统进行设计和功能划分,用专用集成电
路(ASIC)实现系统的关键电路,然后采用硬件描述语言(HDL)完成系统行为级设计,最后生成最终的器件。

1.3.2 EDA工具
EDA工具软件可大致可分为:
(1)PCB设计工具——Protel,主要包括电路原理图的设计、网络表的生成及印刷电路板的设计方法、设计工艺及操作等内容。

(2)Multisim软件就是一个专门用于电子线路仿真与设计的EDA工具软件,它是EWB 的升级版。

EWB在我国得到广泛的推广应用。

(3)PLD设计工具包括①较成功的的PLD开发平台是MAX+plusII和QuartusII;②Xilinx是FPGA的发明者;③ISP技术是Lattice发明的,但是PLD规模虽小但相对有特色。

1.3.3硬件描述语言
硬件电子系统的计算机语言是HDL。

早期主要是不兼容、不支持多层次设计的ABEL-HDL、AHDL等硬性语言。

VHDL的正式推出,使自上向下逐层描述的设计思想成为高层次设计的核心。

用简要代码进行复杂逻辑的设计,也便于设计结果的保存和重用,广泛应用于数字电路系统。

1.3.4可编程逻辑器件
简单可编程逻辑器件(SPLD)、现场可编程门阵列(FPGA)和复杂可编程逻辑器件(CPLD)是可编程逻辑器件的三种主要类型。

FPGA编程速度快可重复编程,但是系统掉电后,数据会丢失;CPLD编程速度慢也可重复编程,而且系统掉电后,数据不会丢失,适于数据的保密。

1.4 本文结构
本文题目是PPM调制解调器的FPGA设计与实现,阐述了PPM调制解调原理,重点通过QuartusII软件的VHDL语言实现PPM调制器和解调器的设计。

文章的PPM调制解调原理与以往的思想有些不同,尤其是解调阶段更是有着全新的视角,并且完成了PPM 调制解调系统硬件电路,下面详细阐述论文研究及内容安排
第一章是PPM的研究背景、意义以及现状,阐明了PPM调制解调技术在现代光通信技术中的地位及研究价值。

第二章阐述是PPM调制解调原理的介绍,以及设计中所用到的各个模块及其作用。

第三章根据前面章节的分析对PPM调制器进行VHDL建模,完成PPM调制器的VHDL 设计,并给出了调制器顶层设计图和波形仿真图。

第四章根据前面章节的分析对PPM解调器进行VHDL建模,完成PPM解调器的VHDL 设计,并给出了解调器顶层设计图和波形仿真图。

第五章主要是PPM调制解调系统的FPGA实现,完成PPM调制解调的联合仿真和下载,实现软件与硬件的结合,并用Signal TapII软件观测结果。

最后给出文章的设计结论和存在的不足,并对此设计总结自己的心得。

2. PPM 通信系统基本原理
2.1 PPM 调制解调原理框图
PPM 原理如图2-1所示。

图2-1 PPM 原理图
模拟信息源发出信号,经过模数转换调制进入PPM 调制解调系统,输出信号进行数模转换后到达模拟接收端。

PPM 的原理是把一确定时间段分成M 等份,每等份称为一个时隙。

在某个时隙发出一个脉冲,其他时隙上无脉冲,则这一确定时间段就是一个PPM 信号。

综合频带利用率、功率利用率及其它方面考虑,选择L-PPM 作为PPM 实现的具体方式。

PPM 调制所用载波是周期性不连续光脉冲,若PPM 调制信号是L 位,那么传送的数据比特为L 2log 。

若将发送的n 位数据组记为M=(n m m m ,,, 21),时隙位置记为L ,则可以得到单脉冲PPM 调制的映射编码关系:L=n 1-n 21m 2m 2m +++ ,n ∈{0,1,…,n-1}。

为简化计算,本文选择4-PPM 调制发送二进制数据,设一帧传输时间为T ,那么信息传递速率 T/2 bit/s 。

调制后(0,0)所对应的位置为0时隙;(0,1)对应1时隙;(1,0)对应2时隙;(1,1)对应3时隙,映射是一一映射,满足调制的唯一性。

2.2 PPM 调制技术
PPM 调制实际上是一个计时输出脉冲的过程。

若已知一个标准时间的间隔,则可以将计时过程转化为一个计数过程。

当时钟上升沿到来时,计数器开始工作,一直计数到输出一个脉冲,确定脉冲位置。

当计数数据与二进制调制数据相等时就在相应的时隙输出高电平,其他时隙输出低电平。

调制系统主要由串并转换、4分频器、8分频器、计数器、比较器、脉冲成形器、延时器等7个模块。

其中串并转换模块主要完成对输入的串行数据进行二进制编码;4分频器和8分频器主要用于生成其他模块所需要的时钟;比较器主要完成对计数器和串并转换输出的高低电平对应位的匹配比较,当两者相等时就输出一个脉冲信号;延时器主要用于为脉冲成形器模块、计数器模块、比较器模块及串并转换模块提供使能端;窄脉冲成形器用于对比较器的输出脉冲做成形滤波,使脉冲宽度变窄,限制输出脉冲的带宽,便于在信道传输。

2.3 PPM 解调技术
PPM 解调过程本质上就是PPM 调制的逆过程。

本设计中PPM 解调过程主要包括4分频器、8分频器、窄脉冲恢复、脉冲定位、脉冲整形、并串转换、延时器等7个模块。

4分频器和8分频器用于对其它模块提供时钟信号,窄脉冲恢复模块实现了窄脉冲变成宽脉冲的功能;脉冲定位模块实现脉冲位置检测;脉冲整形模块实现脉冲位置的整形;并串转换模块实现二进制译码。

3. PPM调制器的VHDL设计与仿真
3.1 PPM调制器的VHDL建模
在本文设计的PPM调制器中系统时钟信号经过四分频后为计数器提供时钟信号;系统时钟信号经过八分频后为串并转换提供时钟信号。

串行数据经过串并转换模块转化为并行数据,根据系统要求系统时钟信号经过四分频器转化为周期为4的计数器,然后在比较器模块把串并转换输出的数据和计数器数据进行比较,在数据相同的位置输出高电平,其他为低电平。

然后再经过脉冲成形模块输出窄脉冲,PPM调制建模框图如图3-1所示。

图3-1 PPM调制VHDL建模框图
3.2 PPM调制器的VHDL设计与实现
3.2.1 PPM调制器顶层设计
PPM调制器如图3-2所示。

PPM调制器的顶层设计就是将调制部分的各个模块都连接在一起,以此来实现调制功能。

在调制器的基准时钟(clk_generator)控制下,四分频(fenpinqi4)和八分频(fenpinqi8)模块分别为串并转换(sipo)模块和计数器(jishuqi4)模块提供时钟信号,在这两个模块输出的数据经过比较器(ab_comp)模块输出信号后进入脉冲成形(plusegenerator)模块,输出窄脉冲信号(ppmsignal)。

由于在调制过程中有时钟延时,延时器(yanshiqi1)对串并转换(sipo)模块进行延时,使脉冲序列发生器输出时钟与串并转换时钟同步;延时器(yanshiqi)模块为计数器(jishuqi4)和脉冲成形(plusegenerator)模块提供使能端信号,使串并转换(sipo)模块数据周期和计数器(jishuqi4)模块输出数据的4个周期在一个八分频周期内对应,便于比较器模块的比较。

综上所述完成了调制器设计。

图3-2调制器设计图
3.2.2串并转换
串并转换就是把串行的二进制码序列变为并行的码序列,一般使用移位寄存器实现,本设计使用的串并转换器是使在第一位数据进入系统后先寄存,待下一位数据进入系统后在下一个上升沿到来时一起输出。

library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
entity sipo is
port(rst,din,clk:in std_logic;
dout:out std_logic_vector(1 downto 0));
end sipo;
architecture behav of sipo is
signal q:std_logic_vector(1 downto 0);
begin
process(clk,q,din,rst)
variable t:integer range 1 to 3;
begin
if rst='1' then dout<="00";
else if (t=3)then
t:=1;
dout<=q;
elsif(clk'event and clk='1')then
t:=t+1;
q(0)<=din;
q(1)<=q(0);
end if;
end if;
end process;
end behav;
串并转换波形仿真如图3-3所示。

图3-3串并转换波形仿真图
根据仿真图可以看出此模块实现的是输入两位串行数据进入系统,但只在第二位数据的位置输出数据,以此来实现串行输入的数据转化为并行数据输出。

例如图中串行数据010*********等输入(din),并行数据01、01、01、01、11、11对应输出(dout)。

由于每次输入都是两位数据,在第一个时钟(clk)上升沿到来时不输出数据。

3.2.3计数器
计数器在数字系统中主要是对脉冲的个数进行计数,此模块设计是要数脉冲在第几个位置,因为输入是两位的二进制数据,则输出只有00,01,10,11四个二进制数,也就是有4个位置。

计数器就是要确定每一位输入数据的脉冲位置,计数周期是4。

library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity jishuqi4 is
port(clk,rst,en:in std_logic;
q:out std_logic_vector(1 downto 0));
end jishuqi4;
architecture one of jishuqi4 is
signal tmp:std_logic_vector(1 downto 0);
begin
process(clk,rst,en)
begin
if(rst='0')then tmp<="00";
elsif(clk'event and clk='1')then
if(en='1')then tmp<=tmp+1;end if;
end if;
q<=tmp;
end process;
end one;
计数器波形仿真如图3-4所示。

图3-4计数器波形仿真图
可以看出在时钟信号(clk)经过计数器后输出的数据(q)被分成了四个时钟一组循环输出,每一个时钟上升沿到来时对应输出二进制数据,按00,01,10,11的顺序依次输出,输出的计数结果有三个时钟的延时。

3.2.4比较器
对两个或多个数据项进行比较,以确定它们是否相等,称为比较,这种能够实现这种比较功能的装置称为比较器。

该模块要实现计数器输出的数据和串并转换的数据相比较后,在相同数据的位置输出高电平,其他为低电平。

这就要求输出的一位串并转换数据对应四个计数器位置,才能在相应位置比较输出。

library ieee;
use ieee.std_logic_1164.all;
entity ab_comp is
port(a,b:in std_logic_vector(1 downto 0);
rst:in std_logic;
q:out std_logic);
end ab_comp;
architecture one of ab_comp is
begin
process(rst,a,b)
begin
if rst='1' then q<='0';
else if (a=b) then q<='1';
else q<='0';
end if;
end if;
end process;
end one;
比较器波形仿真如图3-5所示。

图3-5比较器波形仿真图
使能端rst为高电平,在此条件下计数器输出值(a)和串并转换的数据(b)相比较,在数据相同的位置输出高电平(q),其它为低电平。

比较器输出的脉冲位置和串并转换输出的并行数据值有关,输出的一个串并转换数据对应四个计数器输出值进行比较后只有一个高电平输出。

例如串并转换经进制转化后输出0,1,2,3,0,1,在与计数器数据相同的位置输出高电平。

3.2.5脉冲成形器
脉冲成形滤波器是用来成形脉冲的,即数字1是用一个矩形脉冲表示,主要用于基带数据的处理。

本设计要实现宽脉冲变为窄脉冲,而且在宽脉冲上升沿到来时输出,则需要一个移位寄存器,把输入的第一位数据先寄存在移位寄存器中,再把输入的数据先进行逻辑“非”再同输入的数据进行逻辑“与”,生成窄脉冲信号,信号的宽度由时钟信号控制。

library ieee;
use ieee.std_logic_1164.all;
entity pulsegenerator is
port(clk,rst,datain:in std_logic;dataout:out std_logic);
end entity;
architecture one of pulsegenerator is
signal q:std_logic;
begin
process(datain,clk,rst)
begin
if rst='0' then dataout<='0';
elsif clk'event and clk='1' then
q<=datain;
end if;
dataout<=datain and (not q);
end process; end one;
脉冲成形波形仿真如图3-6所示。

图3-6脉冲成形波形仿真图
图3-6中使能端信号(rst)为高电平,时钟上升沿(clk)到来时在输入高电平(datain)的位置生成窄脉冲(dataout),而且窄脉冲宽度是输入脉冲宽度的四分之一,窄脉冲信号相对宽脉冲信号有微小的延时,这是系统所用器件导致的。

3.3 PPM调制器波形仿真结果
PPM调制器波形仿真如图3-7所示。

图3-7调制器波形仿真图
从图中可以看出输入(datain)的数据为011000100101,输出(ppmsignal)的数据对应为01,10,00,10,01,01,而且都是在各时钟上升沿到来时才输出。

各使能端都为高电平。

输出的窄脉冲(ppmsignal)相对比较器输出(out-bijiaoqi)的宽脉冲有一点儿时间延时,这是在编码过程中用到了逻辑语言“异或”所致,在解调时必须考虑。

输出的第一位串并转换数据(out_chuanbingzhuanhuan)显示为00,这是由于移位寄存器中开始储存数据都为0,所以刚开始会把这两个0输出。

输出的计数器数据(out_jishuqi)是周期为4个四分频时钟的二进制数据,且每一个周期与串并转换输出数据对应,这样就可以在比较器(out_bijiaoqi)中进行比较,在数据相同的位置输出高电平。

由调制器波形仿真图可以看出,产生了两个四分频时钟的延时,这是使用移位寄存器的缘故。

通过串并转换模块、计数器模块、比较器模块及脉冲成形模块能正确的输出窄脉冲信号。

在串并转换模块实现串口数据的输入并口数据的输出;计数器模块实现脉冲所在位置的定位;比较器模块实现计数器输出的数据和串并转换的数据相比较后,在相同数据的位置输出高电平,其他为低电平;脉冲成形器模块实现窄脉冲的生成;而且在各个模块生成的信号几乎没有延时,都是在同一个时钟信号下生成的。

产生的窄脉冲是比较器输出宽脉冲的四分之一,可以减小对临近信道的干扰,供信道传输。

由此,我们实现了PPM的调制过程。

4. PPM解调器的VHDL设计与仿真
4.1 PPM解调VHDL建模
此过程中输入PPM窄脉冲信号,经过窄脉冲恢复模块使脉冲宽度变宽,在脉冲定位模块确定脉冲所在位置,通过脉冲整形模块使脉冲宽度与计数器的计数周期相等,并串转换模块输出串行数据,由此实现解调功能。

解调过程如图4-1所示。

图4-1 PPM解调过程示意图
4.2 PPM解调器的VHDL设计与实现
4.2.1 PPM解调器顶层设计
解调器顶层设计如图4-2所示。

PPM解调器的顶层设计就是将解调部分的各个模块都连接在一起,以此来实现解调功能。

解调过程实质上是调制的逆过程,本设计中解调器基准时钟(clk2)四分频(fenpinqi4)模块为计数器(jishuqi4)、一位移位寄存器(yanshiqi1)、脉冲定位(pluse2)和脉冲整形(pluse3)等模块提供时钟信号;输入信号(ppmsignal)进入窄脉冲恢复(plusefind)模块,输出宽脉冲信号,经过脉冲定位(pluse2)模块确定了脉冲所在位置,然后在脉冲整形(pluse3)模块使脉冲信号宽度为四个四分频时间宽度,便于在并串转换(piso)实现并行数据变为串行数据,输出最终的解调信号(signal_received)。

由于在解调过程中有时钟延时,则需要加上延时器(yanshiqi1)和(yanshiqi4)等为不同的延时时钟提供使能端,使信号脉冲能正确的解调出来。

本设计并串转换过程中还需要一个使能信号在四分频时钟信号(fenpinqi4)控制下当使能信号为低电平时输入脉冲整形(pluse3)信号,高电平时经并串转换输出信号,而且在第二位数据位置输出,这个使能端信号在时钟信号(clk2)控制下生成的。

综上,解调器的设计完成。

4.2.2窄脉冲恢复
窄脉冲恢复就是要把窄脉冲在接收端恢复到脉冲宽度较宽的脉冲,窄脉冲在时钟上升沿到来时输出,而且时钟信号控制在一个时钟周期内使窄脉冲输出,在下一个上升沿到来时继续输出下一个数据。

library ieee;
use ieee.std_logic_1164.all;
entity pulsefind is
port(rst,clk,datain:std_logic;dataout:out std_logic);
end entity pulsefind;
architecture one of pulsefind is
begin
process(clk,datain,rst)
begin
if rst='0'then dataout<='0';
elsif (clk'event and clk='1') then
dataout<=datain;
end if;
end process;
end one;
窄脉冲恢复波形仿真如图4-3所示。

图4-3窄脉冲恢复波形仿真图
在这一模块中,接收端实现了在时钟(clk)上升沿在输入(datain)为高电平窄脉冲信号时,输出(dataout)为宽脉冲的脉冲宽度恢复,脉冲宽度等于1个时钟周期的时间。

4.2.3 脉冲定位
脉冲定位的目的是为了找到脉冲的起始位置,此模块实现在高电平时输出脉冲,低电平不输出脉冲,这可以在上升沿到来时把脉冲恢复阶段收到的高电平信号位置输出,则就是该收到的脉冲信号此时的位置。

library ieee;
use ieee.std_logic_1164.all;
entity pulse2 is
port(clk,datain1:in std_logic;
datain2:std_logic_vector(1 downto 0);
dataout:out std_logic_vector(1 downto 0));
end pulse2;
architecture one of pulse2 is
begin
process(clk,datain1,datain2)
begin
if clk'event and clk='1' then
if datain1='1' then
dataout<=datain2;
else dataout<="00";
end if;
end if;
end process;
end one;
脉冲定位波形仿真如图4-4所示。

图4-4脉冲定位波形仿真图
可以看出在此阶段输出(dataout)的信号只有在窄脉冲信号(datain1)到来时而且在时钟(clk)上升沿到达时才会输出高电平的位置(datain2),而且高电平持续时间是1个时钟周期时间,其余位置输出低电平信号。

4.2.4 脉冲整形
脉冲整形就是通过放大、削波等办法让所得到脉冲波形符合要求。

此模块的功能是使收到的信号脉冲宽度变成原来的四倍。

这就要求用到2个移位寄存器。

在时钟上升沿到来时,将输入数据先寄存在寄存器中,再将寄存器的数据与输入数据在相应位置依次进行逻辑“异或”,就可以在相应位置使脉冲宽度变宽。

library ieee;
use ieee.std_logic_1164.all;
entity pulse3 is
port(en,clk:in std_logic;datain:in std_logic_vector(1 downto 0);
dataout:out std_logic_vector(1 downto 0));
end entity pulse3;
architecture one of pulse3 is
signal q:std_logic_vector(1 downto 0);
begin
process(clk,datain)
variable n:integer range 0 to 4;
begin
if (en='0') then dataout<="ZZ";q<="00";n:=0;
elsif clk'event and clk='1' then
q<=q xor datain;n:=n+1;
if n=4 then dataout<=q;q<="00";n:=0;
end if;
end if;
end process;
end one;
脉冲整形波形仿真如图4-5所示。

图4-5脉冲整形波形仿真图
由图可以看出使能端(en)一直为高电平,输入(datain)的每四个时钟(clk)信号时间中有一个脉冲是高电平,随后连续的四个时钟信号周期内输出(dataout)这个脉冲的位置。

可以看出输出信号相对于输入信号有四个时钟信号的延时,这是由于在程序编码时使用了逻辑语言“异或”和移位寄存器的缘故。

4.2.5 并串转换
并串转换就是要实现并行数据的输入以及串行数据的输出,在此模块是两位数据的输入则需要2个移位寄存器对并行输入的数据进行寄存,在时钟上升沿到来时再串行输出。

library ieee;
use ieee.std_logic_1164.all;
entity piso is
port(din:in std_logic_vector(1 downto 0);
clk,load:in std_logic;dout:out std_logic);
end piso;
architecture behav of piso is
signal q:std_logic_vector(1 downto 0);
begin
process(load,clk,din)
begin
if(load='0')then q<=din;
elsif(clk'event and clk='1')then q(1)<=q(0);
dout<=q(1);
end if;
end process;
end behav;
并串转换波形仿真如图4-6所示。

图4-6并串转换波形仿真图
由图可以看出当使能端(load)为低电平时读入(din)二进制数据11,下个时钟(clk)上升沿到来时,在使能端为高电平时输出(dout)读入的信息,变为串行数据11。

并行数据占一个时钟周期,输出的数据11各占了一个时钟周期,由此说明输入的并行数据变成了串行数据输出,实现了并串转换功能。

4.3 PPM解调器波形仿真图
解调器波形仿真如图4-7所示。

图4-7 PPM 解调器波形仿真图
从图中可以看出所用的使能端全都是高电平。

输入窄脉冲,在out_plusefind生成宽脉冲,且宽度是窄脉冲的四倍,在脉冲定位信号out_pluse2输出与计数器相同的数值实现窄脉冲恢复,生成与调制阶段比较器宽度相同的脉冲信号;在脉冲整形模块实现脉冲恢复模块生成脉冲的扩展,宽度为原来的四倍,周期与计数器一样;通过16分频器生成的脉冲信号读取out_pluse3脉冲信号通过并串转换模块在signal_received输出最后的信号。

由图中可以看出最后生成的信号是01100110,与输入是一致的,正确解调出输入脉冲信号。

生成的脉冲脉冲定位信号out_pluse2相对输入信号有4个时钟的延时,则在使能端添加了4个移位寄存器,所以在生成的脉冲整形信号又有延时;并串转换生成信号在load_bingchuan (16分频器)的控制下,当低电平到来时输入数据,高电平到来时输出数据,所以又有时钟的延时。

输出模块相对于输入模块有7个四分频时钟周期的延时。

相关文档
最新文档