通信系统中数据交织器的设计2.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
通信系统中数据交织器的设计2

通信系统中数据交织器的设计 实验内容 PN码发生器产生串行数据,按行写入一n列m行的RAM中,写满后按列读出。如下图所示: 实验原理 本实验主要可以分为三大部分:数据输入地址、数据输出地址以及RAM。在地址部分,有两种方案可以实现,一是输入顺序地址,输出乱序地址,二是输入乱序地址,输出顺序地址,本实验采用前一种方案;而RAM的部分,可以采用quartus自带的模块“lpm_ram_dp”双端输入输出来做ram,而用verilogHDL语言的话,可以利用reg型数据:reg [n:0]mem[n:0]格式实现n*n的memory,对于本实验,也可以直接定义一个64位reg型数据来寄存数据,本实验采用后者来实现RAM。下面是各部分的实现原理: 输入地址的产生 利用时钟clk做激励源,采用加法器,地址adressoutin[5:0]从0到63循环赋值,这样输入的数据data就可以如图1所示从地址0开始输入,到地址63结束一次循环; 输出地址的产生 0 8 16 24 32 40 48 56 1 9 17 25 33 41 49 57 2 10 18 26 34 42 50 58 3 11 19 27 35 43 51 59 4 12 20 28 36 44 52 60 5 13 21 29 37 45 53 61 6 14 22 30 38 46 54 62 7 15 23 31 39 47 55 63 数据输出按行地址排序,比如第一排 输出为“0、8、16、24、32、40、48、56”,输出地址adressout同样利用时钟clk做激励,加法器产生。观察图1可以发现,加法器每输出8个地址,首地址addressout就是上一行地址数值减55,比如:第一行地址输完,最后一位是56,那么输出第二行时,首地址adressout=56-55=1,如此类推可以得出每一行地址的首地址数值,当输出地址为63并且累加次数为56时,表明一次地址输出结束。 RAM 本实验采用两个64位reg型数据mem1[63:0]、mem1[63:0]实现数据的交替存储,只需对mem1的第i位或mem2的第j位赋值就可以实现RAM功能。开始时,写入数据到mem1,当写满64位后,开始对mem2赋值同时读取mem1的数据,同理,mem2写满64位后开始对mem1赋值同时读取mem2的数据。 本实验分两个时钟,一个是pn码发生器的数据产生时钟clk,另一个是地址产生及数据读取时钟nclk,clk与nclk反相,这样可以降低数据出错的概率。 实验源程序 1时钟信号clk与nclk的产生 module clk(clock,clear,clk,nclk); input clock; input clear; output clk; output nclk; reg clk; reg nclk; reg [30:0]i1; always @(posedge clock or posedge clear) begin if(clear) begin i1=0; clk=1; nclk=0; end else if(i1==13499) ; begin clk=~clk; nclk=~nclk; i1=0; end else begin i1=i1+1; end end endmodule 2)输入地址产生 module wdadress(clk,adressin,wr); input clk; output adressin; output wr; reg [0:0]wr; reg [5:0]adressin; always @(posedge clk) begin if(adressin==63) begin adressin=0; wr=~wr; end else adressin=adressin+1; end endmodule 3)输出地址的产生 module rdadress(clk,adressout); input clk; output adressout; reg [5:0]adressout; reg [3:0]i; reg [5:0]j; initial begin i=0; j=0; adressout=0; end always @(posedge clk) begin if(i==7j==56) begin i=0; j=0; adressout=0;

文档评论(0)

xy88118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档