完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
我是一入门新手,在网上下了一个16AQM的调制程序,但是在寄存器赋值那快看不懂,求大牛解答,先在这里谢谢了!!程序如下:
module DATA_16QAM_mapper(DM_DIN,DM_ND,DM_RST,DM_CLK,DM_RE,DM_IM,DM_INDEX, DM_RDY); input DM_DIN; //输入信号 input DM_CLK; //脉冲 input DM_ND; //来自上一模块的信号提示 input DM_RST; //复位信号 output[7:0] DM_RE; //输出16QAM调制的实部,八位,一位符号位,一位整数位,六位小数位 output[7:0] DM_IM; //输出16QAM调制的虚部 output[5:0] DM_INDEX;//输出标号 output DM_RDY; //输出信号提示 reg[7:0] DM_RE; reg[7:0] DM_IM; reg DM_RDY; reg[7:0] RE_TEMP; //输出实部暂存 reg[7:0] IM_TEMP; //输出虚部暂存 reg[3:0] STOR; //由于四个输入信号对应一个星座点,因此需要四位的存储器存放 reg MAPEN; reg[5:0] DM_COUNT; reg[5:0] DM_INDEX; reg OUTEN; //使Q_RDY比输入四个信号中最后一个晚一个脉冲的过渡,保证转换完成 reg[1:0] counter; //四个输入信号的计数 reg[1:0] OUT_COUNT; always @(negedge DM_RST or posedge DM_CLK) //Q_RST高电平异步清零 if(!DM_RST) begin MAPEN<=1'b0; DM_RE[7:0]<=8'b00000000; DM_IM[7:0]<=8'b00000000; DM_COUNT[5:0]<=6'b000000; DM_INDEX[5:0]<=6'b000000; DM_RDY<=0; RE_TEMP[7:0]<=8'b00000000; IM_TEMP[7:0]<=8'b00000000; STOR[3:0]<=4'b0000; OUTEN<=0; counter[1:0]<=2'b00; OUT_COUNT<=2'b00; end else begin if(DM_ND) //16QAM encoding begin counter<=counter+1; case(counter) 2'b00:STOR[0]<=DM_DIN; 2'b01:STOR[1]<=DM_DIN; //存入输入数值 2'b10:STOR[2]<=DM_DIN; 2'b11:STOR[3]<=DM_DIN; endcase end else begin counter[1:0]<=2'b00; STOR[3:0]<=4'b0000; end if (counter==2'b11) // MAPEN 标记四个信号是否已经存入 MAPEN<=1'b1; else MAPEN<=1'b0; if(MAPEN) begin //就是这一块,看了另外一个程序也是这样,只是所赋的值不一样,不懂什么意思啊 case(STOR[1:0]) 2'b00:RE_TEMP[7:0]<=8'b11000011; 2'b10:RE_TEMP[7:0]<=8'b11101100; 2'b01:RE_TEMP[7:0]<=8'b00111101; 2'b11:RE_TEMP[7:0]<=8'b00010100; endcase case(STOR[3:2]) 2'b00:IM_TEMP[7:0]<=8'b11000011; 2'b10:IM_TEMP[7:0]<=8'b11101100; 2'b01:IM_TEMP[7:0]<=8'b00111101; 2'b11:IM_TEMP[7:0]<=8'b00010100; endcase OUTEN<=1; end else begin OUTEN<=0; RE_TEMP[7:0]<=8'b00000000; IM_TEMP[7:0]<=8'b00000000; end if(OUTEN) // 输出 begin DM_RE<=RE_TEMP; DM_IM<=IM_TEMP; DM_COUNT<=DM_COUNT+1; DM_INDEX<=DM_COUNT; DM_RDY<=1'b1; end if (DM_INDEX==47) OUT_COUNT<=OUT_COUNT+1; else OUT_COUNT<=0; if (OUT_COUNT==2'b11) begin DM_RE[7:0]<=8'b00000000; DM_IM[7:0]<=8'b00000000; DM_INDEX[5:0]<=6'b000000; DM_COUNT[5:0]<=6'b000000; DM_RDY<=0; end end endmodule |
|
相关推荐
1个回答
|
|
你需要查看星座映射图;
这里将输入的比特串,每4bits映射到星座图上的某个点上,而这个点,使用1个复数来表示值,实部和虚部分别用一个有符号数表示其坐标值,也就是映射的同相分量和正交分量的电平值。 随后可以送上变频芯片。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
960 浏览 0 评论
矩阵4x4个按键,如何把识别结果按编号01-16(十进制)显示在两个七段数码管上?
1164 浏览 0 评论
889 浏览 0 评论
2014 浏览 0 评论
496 浏览 0 评论
1348 浏览 30 评论
5540 浏览 113 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-14 15:23 , Processed in 0.427863 second(s), Total 43, Slave 35 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号