ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:42.55KB ,
资源ID:9280506      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9280506.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(verilog简单卷积器的设计.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

verilog简单卷积器的设计.docx

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

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

3、。总之,由于n,k较小,且利用了各组之间的相关性,在同样的码率和设备的复杂性条件下,无论理论上还是实践上都证明:卷积码的性能至少不比分组码差。二、设计目的(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转换器的Verilo

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

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

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

8、C;-编码数据输出 定义内部状态信号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)当编码使能start为0时不进行编

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

10、escale 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, /enout1是存储卷积低字节结果RAM的片选信号 /

11、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; reg11:0 counter; reg high; reg

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

13、这里采样频率通过FMAX控制 / 为500KHZ。 always (posedge CLK) if(!reset) begin state=IDLE; nconvst=1b1; enout1=1; enout2=1; counter=12b0; high=0; wr=1; line=24b0; address=11b0; end else case(state) IDLE:if(start=1) begin counter=0; /counter是一个计数器,记录已 /用的RAM空间 line=24b0; state=START; end else state=IDLE; /START状态控制

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

15、2+line23:16*h3; 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状态结束一次写操作,若还未写入高字节则转到

16、WRREADY状 / 态开始高字节写入 WREND:begin wr=1; enout1=1; enout2=1; if(!high) begin high=1; state=WRREADY; end else state=WAITFOR; end /WAITFOR状态控制采样频率并判断RAM是否已被写满 WAITFOR: begin if(j=FMAX-1) begin counter=counter+1; if(!counter11) state=START; else begin state=IDLE; $display($time,The ram is used up.); $stop

17、; end end else state=WAITFOR; end default:state=IDLE; endcase / assign rd=1; /RAM的读信号始终保持为高 /j记录时钟,与FMAX共同控制采样频率 /由于直接用CLK的上升沿对nbusy判断以 /决定某些操作是否运行时,会因为两个信号 /的跳变沿相隔太近而令状态机不能正常工作。因此 /利用CLK的下降沿建立EOC信号与nbusy同步,相位 /相差180度,然后用CLK的上升沿判断操作是否进行。 always (negedge CLK ) begin EOC = nbusy; if(!reset|state=START

18、) j=1; else j=j+1; end endmodule程序仿真程序写完后首先要做前仿真,我们可用仿真器(如ModelSim SE/EE PLUS 5.4)来做。为检查我们写的程序,需要编写测试程序,测试程序应尽可能检测出各种极限情况。这里给出一个测试程序供参考。/- testcon1.v -timescale 100ps/100psmodule testcon1; wire wr, enin, enout1, enout2; wire10:0 address; reg rd, CLK, reset, start; wire nbusy; wire nconvst; wire7:0 i

19、ndata; wire7:0 outdata; integer i; parameter HALF_PERIOD=1000; /产生10KHZ的时钟 initial begin rd=1; i=0; CLK=1; forever #HALF_PERIOD CLK=CLK; end /产生置位信号 initial begin reset=1; #(HALF_PERIOD*2 + 50) reset=0; #(HALF_PERIOD*3) reset=1; end /产生开始卷积控制信号 initial begin start=0; #(HALF_PERIOD*7 + 20) start=1; #

20、(HALF_PERIOD*2) start=0; #(HALF_PERIOD*1000) start=1; #(HALF_PERIOD*2) start=0; end assign enin =1; con1 con(.address(address),.indata(indata),.outdata(outdata),.wr(wr), .nconvst(nconvst),.nbusy(nbusy),.enout1(enout1), .enout2(enout2),.CLK(CLK),.reset(reset),.start(start); sram ramlow(.Address(addre

21、ss),.Data(outdata),.SRW(wr),.SRG(rd),.SRE(enout1); adc adc(.nconvst(nconvst),.nbusy(nbusy),. data(indata); endmodule因测试程序已经包括了各模块,只需编译测试程序并运行它。通过仿真器中的菜单(如ModelSim仿真器中功能列表中view的下拉菜单选择structure, signal和wave),可以根据需要看到各种信号的波形,由此检测程序。仿真波形如下:五、设计总结科学技术的发展使人类跨入了高度发展的信息化时代。在政治、军事、经济等各个领域,信息的重要性不言而喻,有关卷积码的研究

22、将越来越受到重视。在编写程序的过程中,我深入学习了VHDL语言的仿真及应用环境,掌握了操作的基本过程与步骤,并能用VHDL语言进行编程及仿真,结合VHDL语言,充分了解到卷积码编译码器的原理和应用。通过这次设计,使我对Verilog数字系统设计这门课程有了更深入的理解。Verilog数字系统是一门实践性较强的课程,为了学好这门课程,必须在掌握理论知识的同时,加强实践。一个人的力量是有限的,要想把设计做的更好,就要学会参考一定的资料,吸取别人的经验,让自己和别人的思想有机的结合起来,得出属于你自己的灵感。 程序的编写需要有耐心,有些事情看起来很复杂,但问题需要一点一点去解决,分析问题,把问题一个

23、一个划分,划分成小块以后就逐个去解决。再总体解决大的问题。这样做起来不仅有条理也使问题得到了轻松的解决。 在这个过程中,我曾经失落过,也曾热情高涨过。生活就是这样,汗水预示着结果也见证着收获。劳动是人类生存生活永恒不变的话题。虽然这只是一次的课程论文的编写,并没有验证方案是否可行,可是平心而论,也耗费了我不少的心血,这就让我不得不佩服开发技术的前辈,才意识到老一辈对我们社会的付出,为了人们的生活更加美好,他们付出多少心血啊! 对我而言,知识上的收获重要,精神上的丰收更加可喜。让我知道了学无止境的道理。我们每一个人永远不能满足于现有的成就,人生就像在爬山,一座山峰的后面还有更高的山峰在等着你。挫

24、折是一份财富,经历是一份拥有。这次论文的写作过程必将成为我人生旅途上一个非常美好的回忆! 通过这次的设计我对于专业课的学习有了更加深刻的认识,以为现在学的知识用不上就加以怠慢,等到想用的时候却发现自己的学习原来是那么的不扎实。以后努力学好每门专业课,让自己拥有更多的知识,才能解决更多的问题!我在更加牢固、灵活地掌握了所学的专业知识的同时,大量学习了VHDL编程的相关知识,为日后深入研究数字系统设计技术打下了基础。六、参考文献1夏宇闻,Verilog数字系统设计教程,北京航天航空大学出版社,2008.62钱莹晶,张仁民,基于Verilog HDL语言描述的卷积码编码器的设计J.科技信息2009第五期 3王新梅,肖国镇,纠错码原理与方法(修订版) M西安电子科技大学出版社,20014王金龙,沈良,任国春,无线通信系统的DSP实现M人民邮电出版社,20025张建斌,基于VHDL语言的卷积码编解码器的设计,现代电子技术2005年第三期

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1