北邮ASIC实验报告 (3,1,8)卷积码编码器

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

北京邮电大学

ASIC原理课程实验

实验报告

设计要求:(3,1,8)卷积码编码器

学院:电子工程学院

专业:电子信息科学与技术

班级:

学号:

姓名:

2013年6月20日

一、设计要求

运用verilog语言编写一个(3,1,8)卷积码编码器,并对其进行仿真。

二、卷积码编码器原理

卷积码拥有良好的纠错性能,是一种被广泛应用于移动通信的信道编码系统。一个(n,k,m)卷积码编码器由k个输入,具有m阶存储的n个输出的线形时序电路实现。通常,n和k是较小的整数,且k<n,但m比较大。当k=1时,信息序列不再分成小块,以便可以连续处理。卷积码(n,k,m)表示码率R=k/n,编码器级数m=s-1,其中s是码约束长度。

反向CDMA信道使用(3,1,8)卷积码,码率R=1/3,约束长度为9,由于k=1,n=3,m=8,则该卷积编码器包含单个输入端,一个8级移位寄存器,三个模2加法器和一个3向编码器输出的连续转向器。编码器每输入一位信息比特将产生三位编码输出。这些编码符号中,第一个输出符号G0是生成序列g1⑴编码产生的符号,第二个输出符号G1是由生成序列g1⑵编码产生的符号,最后一个输出符号G2是由生成序列g1⑶编码产生的符号,如下图所示。

该电路由一个八位寄存器、三个码生成逻辑、一个时隙发生器和一个四选一复用器构成。mux的输入为G0、G1和G2,码选择信号C[1:0]和clk1由时隙发生器产生,输出信号即为整个电路的输出Yout。

卷积编码器的初始状态用rst异步清零信号置为0,rst=0时,电路清零。

卷积编码器的初始状态全为0,初始状态之后输出的第一个编码符号由生成序列g1⑴编码产生。这里,三个生成序列分别为g1⑴=(101101111),g1⑵=(110110011), g1⑶=(111001001)。

即三个生成多项式分别为:

C0=1+X+X2+X3+X5+X6+X8 (557)

C1=1+X+X4+X5+X7+X8 (663)

C2=1+X3+X6+X7+X8 (711)

三、实验设计与实现

根据以上实验要求,我们首先设想了分为几个模块,然后将各个模块进行整合实现编码器的功能,根据我们的设想编写相应的verilog程序,进行调试、实现。以下是实验的具体过程。

1.卷积码模块设计

(1)3分频器(fenping)。它的功能是产生clk时钟三分之一频率的时钟信号,命名为clk1,同时产生选择信号sel[1:0]。

(2)4-1多路选择器(mux_4_1)。根据sel[1:0]输入的选择信号,选择4路(in0,in1,in2,in3)输入的1路来输出(out)。后来,根据老师的指导,将卷积的运算逻辑组装在这个模块里。

(3)8位移位寄存器(wyjc_8)。用于记录输入的信息。每经过一个时钟上升沿(clk1)向前移位一次。

2.verilog程序编写

各个模块相应的代码和注释如下所示。

(1)3分频器

module fenping(clear,clk,clk1,count);

input clk,clear;

output clk1,count;

wire clk,clear;

reg clk1;

reg [2:0] count;

always @(posedge clk or posedge clear)

begin

if(clear==1)

count[2:0]<=3’b010;

else

begin//通过循环移位实现3分频

count[0]<=count[2];

count[1]<=count[0];

count[2]<=count[1];

clk1<=count[1];

end;

end

endmodule

(2)4—1多路选择器

module mux_4_1(clk1,clk,sel,in,kin,out);

input[1:0] sel;

input clk,in,clk1;

input[7:0] kin;

output out;

wire [1:0] sel;

reg out;

reg [8:0]k;

always @(posedge clk) //依次计算c0,c1,c2

begin

case(sel)

default out<=0;

2’b00:out<=(k[0]+k[1])+(k[2]+k[3])+(k[5]+k[6]+k[8]);

2’b01:out<=k[0]+k[1]+k[4]+k[5]+k[7]+k[8];

2’b10:out<=k[0] +k[3]+k[6])+k[7]+k[8];

endcase

end

always @(posedge clk1) //采样部分

begin

k[7:0]<=kin[7:0];

k[8]<=in;

end

endmodule

(3)8位移位寄存器

module wyjc_8(clear,clk,in,out);

Input clear,clk,in;

output[7:0] out;

reg[7:0] out;

wire clear,clk,in;

always @(posedge clk or posedge clear)

begin

if(clear==1)

ou t[7:0]<=8’b0;

else

begin

out[7]<=in;

out[6]<=out[7];

out[5]<=out[6];

out[4]<=out[5];

out[3]<=out[4];

out[2]<=out[3];

out[1]<=out[2];

out[0]<=out[1];

end

end

endmodule

(4)整合模块

`include “fenping.v”//将各模块加入文件

`include “mux_4_1.v”

`include “wyjc_8.v”

module bianma(rst,clk,in,out,clk1);

input rst,clk,in;

output out;

output clk1;

wire clr,clk,in,clk1,rst;

wire[7:0] k;

wire[2:0] sel;

reg g0,g1,g2;

fenping f1(.clk(clk),.clear(clr),.clk1(clk1),.count(sel));//分频器实例化

相关文档
最新文档