EDA课程设计通信编解码器设计.docx
- 文档编号:4153605
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:17
- 大小:94.72KB
EDA课程设计通信编解码器设计.docx
《EDA课程设计通信编解码器设计.docx》由会员分享,可在线阅读,更多相关《EDA课程设计通信编解码器设计.docx(17页珍藏版)》请在冰豆网上搜索。
EDA课程设计通信编解码器设计
EDA课程设计_通信编解码器设计
----
学号09700113
EDA技术及应用
设计说明书
通信编解码器设计
起止日期:
2013年1月4日至2013年1月10日
学生姓名李炯
班级09电信1班成绩
指导教师(签字)
电子与信息工程系
2013年1月9日
-
----
天津大学
课程设计任务书
2012—2013学年第1学期
电子与信息工程系电子信息工程专业
课程设计名称:
EDA技术及应用
设计题目:
通信编解码器设计
完成期限:
自2013年1月4日至2013年1月10日共1周一(课程设计依据
在掌握常用数字电路原理和技术的基础上,利用EDA技术和硬件描述语言,EDA开发软件(Quartus?
)和硬件开发平台(达盛试验箱Cyclone?
FPGA)进行初步数字系统设计。
二(课程设计内容
采用状态机结构设计简易串行数据编码器,实现NRZ码转换为差分码,双相码和曼彻斯特码功能,串行数据速率为9600bit/s,扩展设计:
超采样,频率1MHz实现数据实现960bit/s传输。
要求通过仿真验证。
三(课程设计要求
1.要求独立完成设计任务。
2.课程设计说明书封面格式要求见《天津城市建设学院课程设计教学工作规范》附表13.课程设计的说明书要求简洁、通顺,计算正确,图纸表达内容完整、清楚、规范。
4.测试要求:
根据题目的特点,采用相应的时序仿真或者在实验系统上观察结果。
5.课设说明书要求:
1)说明题目的设计原理和思路、采用方法及设计流程。
2)系统框图、VHDL语言设计清单或原理图。
3)对各子模块的功能以及各子模块之间的关系作较详细的描述。
4)详细说明调试方法和调试过程。
5)说明测试结果:
仿真时序图和结果显示图。
并对其进行说明和分析。
指导教师(签字):
教研室主任(签字):
批准日期:
2012年12月22日
-
----
第一章通信解码器概述.........................................................................................................................................1
1.1几种码的介绍...........................................................................................................................................1
1.1.1NRZ码............................................................................................................................................1
1.1.2差分码...........................................................................................................................................1
1.1.3曼彻斯特码(又称双相码)............................................................................................................1
1.2总体方案概述...........................................................................................................................................2
1.3用状态机设计差分码编码器...................................................................................................................2
1.3.1状态机简介...................................................................................................................................2
1.3.2对编码器的设计...........................................................................................................................3
1.4曼彻斯特码模块程序...............................................................................................................................3第二章转码器的设计与仿真.................................................................................................................................6
2.1功能描述...................................................................................................................................................6
2.2差分码源程序(基于VerilogHDL语言)............................................................................................6
2.3功能模块的仿真.......................................................................................................................................7
2.4曼彻斯特码源程序(基于VerilogHDL).............................................................................................8
2.5功能模块仿真.........................................................................................................................................10第三章转码器的综合及硬件验证........................................................................................................................11
3.1转码器码的综合......................................................................................................................................11
3.1.1曼彻斯特码转码器......................................................................................................................11
3.1.2差分码转码器..............................................................................................................................11
3.2图形文件..................................................................................................................................................11第四章转码器的设计总结...................................................................................................................................12
4.1设计调试.................................................................................................................................................12
4.2设计心得.................................................................................................................................................12参考文献.................................................................................................................................................................13
-
----
第一章通信解码器概述
编解码器指的是一个能够对一个信号或者一个数据流进行变换的设备或者程序。
这里指的变换既包括将信号或者数据流进行编码(通常是为了传输、存储或者加密)或者提取得到一个编码流的操作,也包括为了观察或者处理从这个编码流中恢复适合观察或操作的形式的操作。
编解码器经常用在视频会议和流媒体等应用中,通常主要还是用在广电行业,作前端应用。
1.1几种码的介绍
1.1.1NRZ码
数字信号可以直接采用基带传输,所谓基带就是指基本频带。
基带传输就是在线路中直接传送数字信号的电脉冲,这是一种最简单的传输方式,近距离通信的局域网都采用基带传输。
基带传输时,需要解决数字数据的数字信号表示以及收发两端之间的信号同步问题。
对于传输数字信号来说,最简单最常用的方法是用不同的电压电平来表示两个二进制数字,也即数字信号由矩形脉冲组成。
按数字编码方式,可以划分为单极性码和双极性码,单极性码使用正(或负)的电压表示数据;双极性码是二进制码,1为反转,0为保持零电平。
根据信号是否归零,还可以划分为归零码和非归零码,归零码码元中间的信号回归到0电平,而非归零码遇1电平翻转,零时不变。
1.1.2差分码
通信中的差分编码,差分编码输入序列{an},差分编码输出序列{bn},二者都为{0、1}序列,则差分编码输出结果为bn=an异或bn-1,并不是bn=an异或an-1(即所谓的:
对数字数据流,除第一个元素外,将其中各元素都表示为各该元素与其前一元素的差的编码。
这么定义是不准确的。
)。
前者多用在2DPSK调制,后者多用在MSK调制预编码。
同时后者是码反变换器的数学表达式,即用来解差分编码用的。
1.1.3曼彻斯特码(又称双相码)
曼彻斯特编码(ManchesterEncoding),也叫做相位编码(PE),是一个同步时钟编码技术,被物理层使用来编码一个同步位流的时钟和数据。
曼彻斯特编码被用在以太网媒介系统中。
曼彻斯特编码提供一个简单的方式给编码简单的二进制序列而没有长的周期没有转换级别,因而防止时钟同步的丢失,或来自低频率位移在贫乏补偿的模拟链接位错误。
在这个技术下,实际上的二进制数据被传输通过这个电缆,不是作为一个序列的逻辑1或0来发送的(技术上叫做反向不归零制(NRZ))。
相反地,这些位被转换为一个稍微不同的格式,它通过使用直接的二进制编码有很多的优点。
曼彻斯特编码,常用于局域网传输。
在曼彻斯特编码中,每一位的中间有一跳变,位中间的跳变既作时钟信号,又作数据信号;从低到高跳变表示"0",从高到低跳变表示"1"。
还有一种是差分曼彻斯特编码,每位中间的跳变仅提供时钟定时,而用每位开始时有无跳变表示"0"或"1",有跳变为"0",无跳变为"1"。
本文主要介绍用VerilogHDL语言来描述编写一个将NRZ码转换为曼彻斯特码和差分码的软件模块,并能够在FPGA芯片中调试和仿真。
四总码型的编码方案如下图1-1:
1
----
图1-1四总码型的编码方案
1.2总体方案概述
曼彻斯特解码器是一种基于硬件描述的设计方案;该方案先利用VerilogHDL语言描述少量逻辑单元,构成逻辑处理模块,继而搭建出解码器。
曼彻斯特码是将NRZ普通二进制数据与其位率时钟信号相异或而得,解决了传输数据没有时钟的问题。
当传送信号为“1”,曼彻斯特编码由高电平跳变为低电平;若传送的信息为“0”;曼彻斯特编码由低电平转变为高电平;如果有连续的“1”或“0”信息出现时,则曼彻斯特编码保持“1”或“0”的跳变,即编码后,信息“0”与时钟一致,信息“1”与时钟反相(相位相差180度)。
曼彻斯特编码是一种相位调制,有时钟的180度相位代表NRZ信号的逻辑“1”电平。
这次设计主要是要实现将NRZ码转成曼彻斯特码的功能,总体的设计原理框图如图1-2所示。
图1-2原理框图
1.3用状态机设计差分码编码器
1.3.1状态机简介
状态机是一个有向图形,由一组节点和一组相应的转移函数组成。
状态机通过响应一系列事件而“运行”。
每个事件都在属于“当前”节点的转移函数的控制范围内,其中函数的范围是节点的一个子集。
函数返回“下一个”(也许是同一个)节点。
这些节点中至少有一个必须是终态。
当到达终态,状态机停止。
状态机主要分为2大类:
第一类,若输出只和状态有关而与输入无关,则称为Moore状态机:
第二类,输出不仅和状态有关而且和输入有关系,则称为Mealy状态机。
要特别注意的是,因为Mealy状态机和输入有关,输出会受到输入的干扰,所以可能会产生毛刺(Gitch)现象,使用时应当注意。
事实上现在市面上有很多EDA工具可以很方便的将采用状态图的描述转换成可以综合的VHDL程序代码。
2
----
1.3.2对编码器的设计
设初始状态为S0编码为00,根据功能带入输入0时得到下一状态S1和相应输出0。
依次代入类推,可
得到如图1-3所示的状态图。
S0
0/0
0或1/11/0
S3S1
1/0
0或1/00/1
S2
图1-3状态图
其状态机设计程序如下:
always@(negedgeclkornegedgereset)
if(reset==0)state<=S0;elsestate<=next_state;
always@(stateorin)begin
out=0;
case(state)
S0:
beginif(in==0)next_state=S1;elsenext_state=S3;end
S1:
beginnext_state=S2;end
S2:
beginout=1;if(in==0)next_state=S1;elsenext_state=S3;end
S3:
beginout=1;next_state=S0;end
endcase
end
1.4曼彻斯特码模块程序
曼彻斯特编码模块如下:
moduleManchester_bian(in_dat,clk_tong,clk_fan,out_dat_tong,out_dat_fan,clr);
inputin_dat,clk_tong,clk_fan,clr;
outputout_dat_tong,out_dat_fan;
wireout_dat_tong,out_dat_fan;
3
----wireout_dat_tong_1,out_dat_fan_1;wireout_dat_tong_0,out_dat_fan_0;
assignout_dat_tong_1=(state1[1:
0]==2'b01)?
(clk_tong&&con):
1'b0;
assignout_dat_tong_0=(state1[1:
0]==2'b10)?
(clk_fan&&con):
1'b0;
assignout_dat_tong=(out_dat_tong_1)||(out_dat_tong_0);
assignout_dat_fan_1=(state2[1:
0]==2'b01)?
(clk_tong&&con):
1'b0;
assignout_dat_fan_0=(state2[1:
0]==2'b10)?
(clk_fan&&con):
1'b0;
assignout_dat_fan=(out_dat_fan_1)||(out_dat_fan_0);
reg[1:
0]state1;
reg[1:
0]state2;
reg[1:
0]dat_reg;
regcon;
always@(posedgeclk_tong)
begin
con=1'b0;
if(~clr)
begin
state1[1:
0]=2'b01;
state2[1:
0]=2'b01;
con=1'b0;
end
else
begin
dat_reg[1:
0]=dat_reg[1:
0]>>1;
dat_reg[1]=in_dat;
if(dat_reg[1])
begin
state1[1:
0]=2'b01;
con=1'b1;
if(state2[1:
0]==2'b01)
begin
state2[1:
0]=2'b10;
end
else
begin
state2[1:
0]=2'b01;
end
end
else
4
----
begin
state1[1:
0]=2'b10;
con=1'b1;
if(state2[1:
0]==2'b01)
begin
state2[1:
0]=2'b01;
end
elseif(state2[1:
0]==2'b10)
begin
state2[1:
0]=2'b10;
end
end
end
end
endmodule
5
----
第二章转码器的设计与仿真
2.1功能描述
1、输入NRZ码;
2、设置CLK;
3、输出差分码,曼彻斯特码。
2.2差分码源程序(基于VerilogHDL语言)
moduleNRZ_To_Differential(Out,in,clk,reset);
outputOut;
inputin;
inputclk,reset;
regOut;
reg[1:
0]state,next_state;
parameterS0=0,S1=1,
S2=2,S3=3;
always@(negedgeclkornegedgereset)
if(reset==0)state<=S_0;elsestate<=next_state;
always@(state)begin
Out=0;
case(state)
S_0:
beginif(==0)next_state=S_1;elsenext_state=S_3;end
S_1:
beginnext_state=S_2;end
S_2:
beginOut=1;if(==0)next_state=S_1;elsenext_state=S_3;end
S_3:
beginOut=1;next_state=S_0;end
endcase
end
endmodule
modulestimulus();
regCLK,RESET;
regBIN;
wireBOUT;
NRZ_To_DifferentialT1(
.Out(BOUT),
.(BIN),
.clk(CLK),
.reset(RESET)
6
----
);
initial
$monitor($time,":
IN=%bOUT=%b",BIN,BOUT,);
initialbegin
RESET<=0;BIN<=0;
#5if(BOUT!
=0)
$display($time,":
ResetState_0Failed!
");
RESET<=1;
#10if(BOUT!
=0)
$display($time,":
State_1Failed!
");
#5BIN<=1;
#5if(BOUT!
=1)
$display($time,":
State_2Failed!
");
#10if(BOUT!
=1)
$display($time,":
State_3Failed!
");
#45BIN<=0;
#40BIN<=1;
#20BIN<=0;
#60$stop;
end
endmodule
2.3功能模块的仿真
功能仿真采用QuartusII7.2实现程序功能:
1.打开Quartus后,新建一个VerilogHDLfile
文件,讲上述程序复制到生成的对话框中,保存;
2.保存运行后,新建一个VectorWaveformfile
文件保存在同一文件夹下;
3.将,Out,CLK,RESET导入窗口;
4.修改EndTime,CLK和RESET的Coun
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 课程设计 通信 编解码器 设计