基于FPGA的曼彻斯特编译码设计.docx
- 文档编号:159982
- 上传时间:2023-04-28
- 格式:DOCX
- 页数:15
- 大小:232.54KB
基于FPGA的曼彻斯特编译码设计.docx
《基于FPGA的曼彻斯特编译码设计.docx》由会员分享,可在线阅读,更多相关《基于FPGA的曼彻斯特编译码设计.docx(15页珍藏版)》请在冰点文库上搜索。
基于FPGA的曼彻斯特编译码设计
合肥学院
课程设计报告
题目:
基于FPGA的曼彻斯特编译码设计与实现
系别:
电子信息与电气工程系
专业:
通信工程
班级:
10通信工程1班
学号:
100507400710050760011005074012
姓名:
柯望吕烨邓超
导师:
段慧敏
成绩:
________________________
2013年12月9日
一、前言3
二、方案论证及选择4
1.1方案一4
1.2方案二4
三、理论分析4
1.1伪随机序列模块4
1.2曼彻斯特编码模块5
1.3曼彻斯特解码模块5
1.4四分频模块设计5
四、系统整体设计6
五、实验相关程序6
1.1M序列产生程序6
1.2曼彻斯特编码程序7
1.3曼彻斯特解码程序8
1.4四分频程序9
1.5整体程序9
六、总结10
参考文献11
附录11
1.1附录一11
1.2附录二12
1.3附录三12
1.4附录四13
基于FPGA的曼彻斯特编译码设计与实现
中文摘要
随着科学技术的进步,现代战争样式向信息战形式发展。
现代战争胜负对于信息获取的依赖程度前所未有的提高。
在现代战争中,若己方的通讯交流方式早敌军破获,则地方将获取己方部队动向或实施信息干扰。
将会使部队陷入极其危险地境地中。
因此,信息战对通讯加密手段的要求极高。
伪随机序列(Pseudo-noise Sequence)又称伪噪声或伪随机码,具有类似随机信号的一些统计特性,但又是有规律的,容易产生和复制的。
最大长度线性移位寄存器序列(m序列)是保密通信中非常重要的一种伪随机序列,它具有随机性、规律性及较好的自相关和互相关性,而且密钥量很大。
利用m序列加密数字信号,使加密后的信号在携带原始信息的同时具有伪噪声的特点,以达到在信号传输的过程中隐藏信息的目的;在信号接收端,再次利用m序列加以解密,恢复出原始信号。
这样,通过对m序列的应用,将大大的提高通讯的保密程度和防窃取能力。
这样的通讯手段被称为扩展频谱通信
关键词:
伪随机码;曼彻斯特码;曼彻斯特编译码;FPGA
一、前言
曼彻斯特码(Manchestercode),又称裂相码,双向码,是一种自同步的编码方式,即时钟同步信号隐藏在数据波形中,亦即在传输代码信息的同时,也将时钟同步信号一起传输到对方。
另外,曼彻斯特码每位编码中有一跳变,不存在直流分量。
因此该码具有自同步能力和良好的抗干扰性能。
曼彻斯特编码(ManchesterEncoding),也叫做相位编码(PE),是一个同步时钟编码技术,被物理层使用来编码一个同步位流的时钟和数据。
曼彻斯特编码被用在以太网媒介系统中。
曼彻斯特编码提供一个简单的方式给编码简单的二进制序列而没有长的周期和转换级别,因而防止时钟同步的丢失,或来自低频率位移在贫乏补偿的模拟链接位错误。
FPGA采用了逻辑单元阵列LCA(LogicCellArray)这样一个概念,内部包括可配置逻辑模块CLB(ConfigurableLogicBlock)、输入输出模块IOB(InputOutputBlock)和内部连线(Interconnect)三个部分。
现场可编程门阵列(FPGA)是可编程器件,与传统逻辑电路和门阵列(如PAL,GAL及CPLD器件)相比,FPGA具有不同的结构。
FPGA利用小型查找表(16×1RAM)来实现组合逻辑,每个查找表连接到一个D触发器的输入端,触发器再来驱动其他逻辑电路或驱动I/O,由此构成了既可实现组合逻辑功能又可实现时序逻辑功能的基本逻辑单元模块,这些模块间利用金属连线互相连接或连接到I/O模块。
FPGA的逻辑是通过向内部静态存储单元加载编程数据来实现的,存储在存储器单元中的值决定了逻辑单元的逻辑功能以及各模块之间或模块与I/O间的联接方式,并最终决定了FPGA所能实现的功能,FPGA允许无限次的编程。
二、方案论证及选择
由实验要求本次课程设计分四个模块分别为基于FPGA的伪随机序列产生模块;基于FPGA的曼彻斯特编码模块;基于FPGA的曼彻斯特解码模块;基于FPGA的四分频模块。
1.1方案一
方案一:
实现上述四个模块可以用Quartus软件中的原理图编辑功能进行各个模块的设计,然后进行元件封装进行连接实现整体设计。
但是由于Quartus软件所提供的基本元件有限不能满足本实验的实验要求。
故不采用原理图设计本实验。
1.2方案二
方案二:
由VHDL硬件描述语言的强大功能可以运用VHDL语言对各个模块的功能进行功能描述,使得各个模块能够实现各自的子功能。
与原理图编辑类似,将用VHDL语言描述的各个子模块进行元件封装以便用例化语句进行调用。
此方案可以减少原理图设计时的线路连接的繁琐工作,可以方便的进行功能的改变和错误检查。
故本次实验选择VHDL语言进行功能描述完成实验要求。
三、理论分析
1.1伪随机序列模块
伪随机序列模块:
由实验要求需要产生的伪随机序列满足特征方程:
f=1+x^2+x^3+x^4+x^8。
由特征方程的表达式可知线性反馈移位寄存器的抽头位置分别在c0,c5,c9。
并且c5和c9进行异或运算作为输入输入给D8。
根据功能要求用VHDL语言进行描述。
在进行软件设计时可以通过使能端控制对c0--c8进行初始设置,并且在时钟控制下按照程序设置运行程序,并进行波形仿真以验证程序功能的正确性。
m序列实验程序波形见附录一
图1线性反馈移存器的一般组成原理图
1.2曼彻斯特编码模块
曼彻斯特编码模块:
由曼彻斯特解码规则可将程序设置为在输入一个二进制码元时将此输入二进制码元作为标准逻辑矢量的一个元素,再将此码元取反作为标准逻辑矢量的另一个元素。
最后将所得的两个元素进行并置输出为二位的标准逻辑矢量,并将此标准逻辑矢量按位输出即可得到曼彻斯特编码在仿真时可以通过输入码元与对应的仿真输出二位的标准逻辑矢量进行比较确认是否输出正确。
曼彻斯特编码的实验程序见附录二。
1.3曼彻斯特解码模块
曼彻斯特解码模块:
与曼彻斯特编码类似,可以根据曼彻斯特解码的规则可将程序设置为在输入两个码元后,对两个码元所组成的码组进行判别从而输出相应的单个的二进制码元。
在曼彻斯特解码的过程中为保证在输入两个码元后在进行判别需要用到两个不同频率的时钟信号。
控制进行曼彻斯特解码输入的时钟信号时钟频率是进行码组判别的时钟信号时钟频率的4倍。
因此需要对同一个时钟信号进行4分频。
曼彻斯特解码实验程序见附录三。
1.4四分频模块设计
四分频模块设计:
为了减少在一个实验中用到多个外接时钟信号,可以通过将一个时钟信号进行分频获得满足要求的不同频率的时钟信号。
为满足曼彻斯特解码对输入时钟信号的要求,需要对同一时钟信号进行四分频。
四分频实验程序见附录四。
四、系统整体设计
按照以上各个子系统模块以及整体连接可以完成实验基本要求。
编码速率可以通过调节时钟CLK1的频率来改变。
对于实验要求的伪码数据率为10~100kbps,可以调节时钟CLK1的时钟频率在10K~100K之间。
仿真分析:
在Quartus软件中进行整体软件设计程序仿真,通过仿真波形图分析输入数据和输出数据可以验证系统满足实验要求。
图2系统总体设计框图
五、实验相关程序
1.1M序列产生程序
libraryieee;
useieee.std_logic_1164.all;
entityMis
port(clk,led:
instd_logic;
z:
instd_logic_vector(8downto0);
MOT:
outstd_logic_vector(8downto0);
MO:
outstd_logic);
endentity;
architectureM1ofMis
signalreg:
std_logic_vector(8downto0);
signalcy,A,B,C:
std_logic;
begin
process(clk)
begin
if(clk'eventandclk='1')and(clk'last_value='0')then
caseledis
when'1'=>reg(8downto0)<=z(8downto0);
when'0'=>reg(7downto0)<=reg(8downto1);
cy<=reg(0);
A<=reg(5)xorreg(0);
B<=reg(6)xorA;
C<=reg(7)xorB;
reg(8)<=C;
endcase;
endif;
endprocess;
MO<=cy;MOT(8downto0)<=reg(8downto0);
endM1;
1.2曼彻斯特编码程序
libraryieee;
useieee.std_logic_1164.all;
entityMCis
port(clk,MCI:
instd_logic;
MCOV:
outstd_logic_vector(1downto0);
MCO:
outstd_logic);
endentity;
architectureMC1ofMCis
signala,b,d,e:
std_logic;
signalc:
std_logic_vector(1downto0);
begin
u1:
process(clk,MCI)
begin
if(clk'eventandclk='1')and(clk'last_value='0')
then
b<=MCI;
a<=notMCI;
c(1downto0)<=a&b;
e<=c(0);
endif;
endprocess;
MCO<=e;MCOV(1downto0)<=c(1downto0);
endarchitectureMC1;
1.3曼彻斯特解码程序
libraryieee;
useieee.std_logic_1164.all;
entityMCJis
port(clk1,clk2,MCJI:
instd_logic;
MCOJV:
outstd_logic_vector(1downto0);
MCJO:
outstd_logic);
endentityMCJ;
architectureMCJ1ofMCJis
signala,c:
std_logic_vector(1downto0);
signalb:
std_logic;
begin
process(clk1,MCJI)
variableJ:
std_logic_vector(1downto0);
begin
if(clk1'eventandclk1='1')and(clk1'last_value='0')
then
J
(1):
=J(0);
J(0):
=MCJI;
J(1downto0):
=J
(1)&J(0);
endif;
a(1downto0)<=J(1downto0);
endprocess;
c(1downto0)<=a(1downto0);
process(clk2,c(1downto0))
variableh:
std_logic;
begin
if(clk2'eventandclk2='1')and(clk2'last_value='0')
then
casec(1downto0)is
when"10"=>h:
='1';
when"01"=>h:
='0';
whenothers=>h:
=h;
endcase;
b<=h;
endif;
endprocess;
MCJO<=b;MCOJV(1downto0)<=c(1downto0);
endarchitectureMCJ1;
1.4四分频程序
libraryieee;
useieee.std_logic_1164.all;
entityEFPis
port(clk:
instd_logic;
clk0:
outstd_logic);
endentityEFP;
architectureclofEFPis
signala:
integer:
=0;
begin
process(clk)
begin
if(clk'eventandclk='1')and(clk'last_value='0')
then
ifa=3
then
a<=0;
clk0<='1';
else
a<=a+1;
clk0<='0';
endif;
endif;
endprocess;
endarchitecturecl;
1.5整体程序
libraryieee;
useieee.std_logic_1164.all;
entityZHis
port(ZHL,ZHC:
instd_logic;
ZHJ:
outstd_logic;
ZHJV,ZHBV:
outstd_logic_vector(1downto0);
ZHZ:
instd_logic_vector(8downto0);
ZHMV:
outstd_logic_vector(8downto0));
endentityZH;
architectureZH1ofZHis
componentMis
port(clk1,led:
instd_logic;
z:
instd_logic_vector(8downto0);
MOT:
outstd_logic_vector(8downto0);
MO:
outstd_logic);
endcomponentM;
componentMCis
port(clk2,MCI:
instd_logic;
MCOV:
outstd_logic_vector(1downto0);
MCO:
outstd_logic);
endcomponentMC;
componentMCJis
port(clk5,clk4,MCJI:
instd_logic;
MCOJV:
outstd_logic_vector(1downto0);
MCJO:
outstd_logic);
endcomponentMCJ;
componentEFPis
port(clk6:
instd_logic;
clk3:
outstd_logic);
endcomponentEFP;
signala,b,c:
std_logic;
begin
u1:
Mportmap(led=>ZHL,Z(8downto0)=>ZHZ(8downto0),clk1=>ZHC,MOT=>ZHMV,MO=>a);
u2:
MCportmap(MCI=>a,clk2=>ZHC,MCO=>b,MCOV=>ZHBV);
U3:
EFPportmap(clk6=>ZHC,clk3=>c);
U4:
MCJportmap
(MCJI=>b,clk5=>ZHC,clk4=>c,MCOJV=>ZHJV,MCJO=>ZHJ);
endarchitectureZH1;
六、总结
本论文讨论了曼彻斯特编解码器的实现。
为了达到设计要求,在试验要求的指导下设计出伪随机序列产生器、曼彻斯特编解码器、曼彻斯特解码器及四分频产生器,报告讨论了各个子模块的工作原理,分析了在设计中所需要解决的关键问题,确定了实现方案,重点介绍了曼彻斯特编解码仿真及实现。
经过仿真波形分析该曼彻斯特编解码器及差分曼彻斯特编解码器都能够完成编解码功能,并且性能稳定。
通过整体仿真分析验证设计满足整体功能要求。
通过本次课程设计熟悉了曼彻斯特码的基本原理,并用VHDL语言进行系统功能的描述,通过软件完成本次设计。
参考文献
[1]南利平,通信原理简明教程;第二版[M].北京:
清华大学出版社,2007.
[2]樊昌信,通信原理教程;第三版[M].北京:
电子工业出版社,2012.
[3]潘松,EDA技术与VHDL[M]。
北京:
清华大学出版社,2005.
[4]禹思敏,通信原理[M]。
西安:
西安电子科技大学出版社,2010.
[5]康华光,电子技术基础:
数字/模拟部分[M].北京:
高等教育出版社,2004.
[6]检索相关论
附录
1.1附录一
图3m随机序列波形
1.2附录二
图4曼彻斯特编码波形
1.3附录三
图5曼彻斯特译码译码波形
1.4附录四
图6四分频程序波形
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 FPGA 曼彻斯特 译码 设计