verilog简单卷积器的设计

上传人:鲁** 文档编号:508585854 上传时间:2023-11-26 格式:DOCX 页数:9 大小:53.58KB
返回 下载 相关 举报
verilog简单卷积器的设计_第1页
第1页 / 共9页
verilog简单卷积器的设计_第2页
第2页 / 共9页
verilog简单卷积器的设计_第3页
第3页 / 共9页
verilog简单卷积器的设计_第4页
第4页 / 共9页
verilog简单卷积器的设计_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《verilog简单卷积器的设计》由会员分享,可在线阅读,更多相关《verilog简单卷积器的设计(9页珍藏版)》请在金锄头文库上搜索。

1、简单卷积器的设计专业:电子信息工程班级:电子092学号:姓名:2012 年 12 月 16 日一、引言卷积码是1955年由Elias等人提出的,是一种非常有前途的编码方法。我们在 一些资料上可以找到关于分组码的一些介绍,分组码的实现是将编码信息分组单 独进行编码,因此无论是在编码还是译码的过程中不同码组之间的码元无关。卷 积码和分组码的根本区别在于,它不是把信息序列分组后再进行单独编码,而是 由连续输入的信息序列得到连续输出的已编码序列。即进行分组编码时,其本组 中的n-k个校验元仅与本组的k个信息元有关,而与其它各组信息无关;但在卷 积码中,其编码器将k个信息码元编为n个码元时,这n个码元不

2、仅与当前段的 k个信息有关,而且与前面的(m-1)段信息有关(m为编码的约束长度)。同样, 在卷积码译码过程中,不仅从此时刻收到的码组中提取译码信息,而且还要利用 以前或以后各时刻收到的码组中提取有关信息。而且卷积码的纠错能力随约束长 度的增加而增强,差错率则随着约束长度增加而呈指数下降。卷积码(n,k,m)主 要用来纠正随机错误,它的码元与前后码元有一定的约束关系,编码复杂度可用 编码约束长度m*n来表示。一般地,最小距离d表明了卷积码在连续m段以内的 距离特性,该码可以在m个连续码流内纠正(d-1)/2个错误。卷积码的纠错能力 不仅与约束长度有关,还与采用的译码方式有关。总之,由于n, k

3、较小,且利 用了各组之间的相关性,在同样的码率和设备的复杂性条件下,无论理论上还是 实践上都证明:卷积码的性能至少不比分组码差。二、设计目的(1) 学习和掌握高速计算逻辑状态机的控制基本方法;(2) 了解计算逻辑与存储器和AD模块的接口设计技术基础;(3) 进一步掌握数据总线在模块设计中的应用和控制;(4) 熟悉用工程概念来编写较完整的测试模块,做到接近真实的完整测试三、设计原理卷积器是数字信号处理系统中常用的部件。它对模拟输入信号实时采样,得到数 字信号序列。然后对数字信号进行卷积运算,再将卷积结果存入RAM中。对模拟 信号的采样由A/D转换器来完成,而卷积过程由卷积器来实现。为了设计卷积器

4、, 首先要设计RAM和A/D转换器的Verilog HDL模型。在电子工业发达的国家,可 以通过商业渠道得到非常准确的外围器件的虚拟模型。如果没有外围器件的虚拟 模型,就需要仔细地阅读和分析RAM和A/D转换器的器件说明书,来自行编写。 因为RAM和A/D转换器不是我们设计的硬件对象,所以需要的只是它们的行为模 型,精确的行为模型需要认真细致地编写,并不比可综合模块容易编写。它们与 实际器件的吻合程度直接影响设计的成功。在这里我们把重点放在卷积器的设计 上,直接给出RAM和A/D转换器的Verilog HDL模型和它们的器件参数(见附录), 可以对照器件手册,认真阅读RAM和A/D转换器的Ve

5、rilog HDL模型。对RAM和 A/D转换器的Verilog HDL模型的详细了解对卷积器的设计是十分必要的。到目前为止,我们对设计模块要完成的功能比较明确了。总结如下:首先它要控 制AD变换器进行AD变换,从AD变换器得到变换后的数字序列,然后对数字序 列进行卷积,最后将结果存入RAM。四、设计实现卷积码编码器通常记作(n,k,N),对应于每段k个比特的输入序列,输出n个比 特;这n个输出比特不仅与当前的k个输入比特有关,而且还与以前的(N-l)k 个输入比特有关。(n,k,N)卷积码编码器包括:一个由N段组成的输入移位寄存 器,每段有k级,共Nk位;一组n个模2加法器;一个由n级组成的

6、输出移位 寄存器。整个编码过程可以看成是输入序列与由移位寄存器和模2加法器连接方 式所决定的另一个序列的卷积。卷积码的解码方法主要有两种:代数译码和概率译码。代数译码是根据卷积 码的本身编码结构进行译码,译码时不考虑信道的统计特性。概率译码在计算时 要考虑信道的统计特性。大数逻辑解码器是代数解码最主要的解码方法,它既可 用于纠正随机错误,又可用于纠正突发错误。选择8位输入总线,输出到RAM的数据总线也选择8位,卷积值为16位,分 高、低字节分别写到俩个RAM中,地址总线为11位。为了理解卷积器设计中的 状态机,必须对A/D转换器和RAM的行为模块有深入的理解。卷积码的编码器是由一个有k个输入端

7、、n个输出端、m节移位寄存器所构 成的有限状态的有记忆系统,通常称它为时序网络。描述这类时序网络的方法很 多,大致可分为两大类型:解析表示法与图形表示法。解析法又可分为离散卷积 法、生成矩阵法、码多项式法等;描述卷积码编译码的过程,可以用不同的描述 方法,如矩阵法、码树法、状态图法和篱状图法等。采用何种方法描述卷积码的 编码器,与其译码方法有很大关系。编码器为串入串出结构,这里一共定义四个端口信号,它们分别data_in : IN STD_LOGIC; -信息数据输入 clk_in : IN STD_LOGIC; -时钟输入 start : IN STD_LOGIC; -编码使能 data_o

8、ut : OUT STD_LOGIC;-编码数据输出 定义内部状态信号state,表示mj、mj-1、mj-2: SIGNAL state :STD_LOGIC_VECTOR(2 down to 0);定义内部信号dtat_internal,用以暂存x1,j、x2,j:SIGNAL data_internal : TD_LOGIC_VECTOR (1 down to 0);于是,由、式可知,data_internal与state的关系为:data_internal(1)=state(0) state(1)state(2)data_internal(0)=state(0) state(2)当编码

9、使能start为0时不进行编码,并将状态state清零;start为1时进行编码, 此时每2个时钟周期输入一个新的信息比特,同时状态信号改变,输出2位已编 码比特,即每个时钟周期输出 1 位已编码比特。通过前面的分析我们已经知道,用高层次的设计方法来设计复杂的时序逻辑,重 点是把时序逻辑抽象为有限状态机,并用可综合风格的Verilog HDL把这样的状 态机描述出来。 下面我们将通过注释来介绍整个程序的设计过程。我们选择 8 位输入总线,输出到RAM的数据总线也选择8位,卷积值的高、低字节被分别 写到两个RAM中。地址总线为11位。为了理解卷积器设计中的状态机,必须 对A/D转换器和RAM的行

10、为模块有深入的理解。卷积器的程序代码如下:timescale 100ps/100psmodule con1(address,indata,outdata,wr,nconvst,nbusy,enout1,enout2,CLK,reset,start);input CLK,/采用 10MHZ 的时钟reset, /复位信号start, /因为 RAM 的空间是有限的,当 RAM 存满后采样和卷积都会 停止。/此时给一个 start 的高电平脉冲将会开始下一次的卷积。 nbusy; /从 A/D 转换器来的信号表示转换器的忙或闲 output wr, /RAM 写控制信号enout1,enout2,

11、 /enout1 是存储卷积低字节结果 RAM 的片选信号 /enout2 是存储卷积高字节结果 RAM 的片选信号 nconvst, /给 A/D 转换器的控制信号,命令转换器开始工作,低电平有效 address; /地址输出input 7:0 indata; /从 A/D 转换器来的数据总线 output7:0 outdata; /写到 RAM 去的数据总线wire nbusy;reg wr;reg nconvst, enout1, enout2;reg7:0 outdata;reg10:0 address;reg8:0 state;reg15:0 result;reg23:0 line;

12、reg11:0 counter;reg high;reg4:0 j;reg EOC;parameter h1=1,h2=2,h3=3; /假设的系统系数START=9b000000010,CALCU=9b000010000,WREND=9b010000000,parameter IDLE=9b000000001,NCONVST=9b000000100,READ=9b000001000,WRREADY=9b000100000,WR=9b001000000,WAITFOR=9b100000000;parameter FMAX=20; /因为 A/D 转换的时间是随机的,为保证按一定的频率 米样,A

13、/D/转换控制信号应以一定频率给出。这里采样频率通过FMAX 控制/ 为 500KHZ。always (posedge CLK)if(!reset)beginstate=IDLE;nconvst=1b1;enout1=1;enout2=1;counter=12b0;high=0;wr=1;line=24b0; address=11b0;endelsecase(state)IDLE:if(start=1)begincounter=0; /counter 是 一个计数器 记录已/用的 RAM 空间 line=24b0; state=START;endelsestate=IDLE;/START状态控

14、制A/D开始转换START: if(EOC)begin nconvst=0; high=0; state= NCONVST;endelsestate=START;/NCONVST状态是A/D转换保持阶段NCONVST: beginnconvst=1;state=READ;end/READ状态读取A/D转换结果,计算卷积结果READ: beginif(EOC) begin line=line15:0,indata; state=CALCU;end else state=READ;endCALCU: beginresult=line7:0*h1+line15:8*h2+line23:16*h3;

15、state=WRREADY;end /将卷积结果写入 RAM 时,先写入低字节,再写入高字节 /WRREADY 状态是写 RAM 准备状态,建立地址和数据 信号WRREADY:begin address=counter; if(!high) outdata=result7:0; else outdata=result15:8; state=WR;end/WR 状态产生片选和写脉冲WR: begin if(!high) enout1=0; else enout2=0; wr=0;state=WREND;end/WREND 状态结束一次写操作,若还未写入高字节则转到 WRREADY 状/ 态开始高字节写入WREND:beginwr=1;enout1=1;enout2=1; if(!high) begin high=1; state=WRREADY;endelse state=WAITFOR;end/WAITFOR状态

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号