数字光纤通信线路编译码实验
此实验属于西电大三选修光通信课程的实验,共分为两部分,第一部分为光纤通信系统综合实验(在实验室完成),第二部分为数字光纤通信线路编译码实验,此文章主要讲解第二部分,另外两次实验的实验报告与工程文件可前往此处下载:https://download.csdn.net/download/yifantan/85941354?spm=1001.2014.3001.5503
一、实验目的
- 熟悉指定序列NRZ码生成原理以及光纤线路CMI编译码原理。
2.初步熟练Altera公司QUARTUS II仿真平台的使用。
3.进一步熟悉数字电路设计技巧。
4.基本掌握如何进行FPGA的电路设计与仿真。
5.了解FPGA功能的物理验证。
二、实验环境
QUARTUS II 13.0
三、实验基本原理及预习
- 编写VERILOG语言新工程,设计实现FPGA内部功能: 15位学号序列(二进制码(非BCD码)表示的本人学号最后四位(前面补零))NRZ码的生成;
CMI编码;
CMI译码(在实验室条件下使用统一系统时钟,输入为CMI编码输出);
时钟分频功能 - 使用对所做设计完成正确编译。
- 使用ALTERA-MODELSIM仿真环境完成信号波形仿真。
FPGA电路仿真的输入输出信号即各测试点信号要求如下:
输入:系统时钟信号(7.68MC) :1路;
输出:周期15位二进制后四位学号序列:
1路;(480Kbps)
CMI编码输出信号: 1路;
CMI译码输出信号: 1路; - 对仿真信号波形结果进行原理分析,发现可能的问题并加以解决,得到正确的仿真结果。
四、设计文件
设计文件代码展示 |
module test_top(
output reg pin98_te3, //codein
output reg pin99_te4, //cmi_ceded
output reg pin100_te5, //cmi_decoded
input wire pin103_te6, //system clk 7.68Mhz
input wire rst //reset
);
reg [3:0] counter; //对时钟clk1十六分频 对时钟clk2八分频
reg clk1; //学号NRZ序列及CMI解码序列时钟 480kbps
reg clk2; //CMI编码序列时钟960kpbs
always@(posedge pin103_te6 or negedge rst) //counter从0到15循环
begin
if(!rst) counter <= 4'b0;
else if(counter == 4'b1111)
begin
counter <= 4'b0;
end
else if(pin103_te6)
begin
counter <= counter+1;
end
end
// clk1, 16分频
always@(posedge pin103_te6 or negedge rst)
begin
if(!rst)
clk1 <= 0;
else if(counter[3] == 0)
clk1 <= 1'b0;
else if(counter[3] == 1)
clk1 <= 1'b1;
end
//clk2, 8分频
always@(posedge pin103_te6 or negedge rst)
begin
if(!rst)
clk2 <= 0;
else if(counter[2] == 0)
clk2 <= 1'b1;
else if(counter[2] == 1)
clk2 <= 1'b0;
end
//输出15位学号NRZ码 后四位0094 变为1011110
reg [3:0] num;
always@(posedge clk1 or negedge rst)
begin
if(!rst)
begin
num <= 4'b0;
end
else if(num == 4'b1111)
begin
num <= 4'b0;
end
else num <= num+1;
case(num)
4'b1001:pin98_te3 <=1;
4'b1010:pin98_te3 <=0;
4'b1011:pin98_te3 <=1;
4'b1100:pin98_te3 <=1;
4'b1101:pin98_te3 <=1;
4'b1110:pin98_te3 <=1;
4'b1111:pin98_te3 <=0;
default:pin98_te3 <=0;
endcase
end
reg [1:0] cmi_reg; //CMI编码寄存器
reg flag =0;
always@(posedge clk1)
begin
if(pin98_te3 == 0) //0码变为01码
cmi_reg <= 2'b01;
else if(pin98_te3 == 1) //1码变为00、11交替
begin
if(flag == 0)
begin
cmi_reg <= 2'b00;
flag <=~flag;
end
else if(flag == 1)
begin
cmi_reg <= 2'b11;
flag <=~flag;
end
end
end
// cmi_ceded 输出CMI编码
reg flag0 = 1'b0;
always@(posedge clk2)
begin
flag0 <= flag0 + 1;
if(flag0 == 1)
pin99_te4 <= cmi_reg[0];
else if(flag0 == 0)
pin99_te4<=cmi_reg[1];
end
//cmi_decoded 输出CMI解码
always@(posedge clk2)
begin
if(cmi_reg == 2'b01)
pin100_te5<=0;
else if(cmi_reg==2'b00 || cmi_reg==2'b11)
pin100_te5<=1;
end
endmodule
激励文件等其他部分请前往资源下载(内含完整报告和工程文件):https://download.csdn.net/download/yifantan/85941354文章来源:https://www.toymoban.com/news/detail-465131.html
五、仿真结果分析
MODELSIM软件中的波形仿真文件
相关报告和代码请前往此处下载:https://download.csdn.net/download/yifantan/85941354?spm=1001.2014.3001.5503文章来源地址https://www.toymoban.com/news/detail-465131.html
到了这里,关于光纤通信系统综合与光线路码设计(西电通院光通信两个实验)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!