基于Verilog的4-PAM

4-PAM,脉冲幅度调制,输入序列首先经过串并转化,然后根据输入选择对应的幅度,尝试输出正负值。主要是为了满足16-QAM的需要。

和之前的一样,结果输出都会延后一个周期。幅值会额外输出一次00的结果,也就是-3。

4 pam
 1 module pam(clk,en,x,rg_x,y,count
2 );
3 input clk;
4 input en;
5 input x; //输入串行数据
6 output [1:0] rg_x; //串行转化后的2位并行数据
7 output [2:0] y; //4-PAM输出幅值
8 output count; //计数
9
10 reg [1:0] rg_x;
11 reg count;
12 reg [2:0] y;
13
14 //wire [2:0] y;
15
16 //assign y=(en==0)?3'b000:(count==1)?y:(rg_x==2'b00)?-3'd3:(rg_x==2'b01)?-3'd1:(rg_x==2'b11)?3'd1:(rg_x==2'b10)?3'd3:3'b000;
17 //根据并行数据选择对应输出幅值,且y只在count=0的时候赋值
18
19 always @(posedge clk) begin//计数
20 if(en==0) count<=0;
21 elseif(count==0) count<=1;
22 else count<=0;
23 end
24
25 always @(posedge clk) begin//串并转化
26 if(en==0) rg_x<=2'b00;
27 elsebegin
28 if(count==0) rg_x[1]<=x;
29 else rg_x[0]<=x;
30 end
31 end
32
33 always @(posedge clk) begin//根据两比特数据选择幅值输出
34 if(en==0) y<=3'b000;
35 elseif(count==1) y<=y;
36 elsebegin
37 case(rg_x)
38 2'b00: y<=-3'd3;
39 2'b01: y<=-3'd1;
40 2'b11: y<=3'd1;
41 2'b10: y<=3'd3;
42 endcase
43 end
44 end
45 endmodule

转载于:https://www.cnblogs.com/madtime-inside/archive/2011/08/04/2127081.html

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值