?? qpsk.v
字號:
`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company:
// Engineer:
//
// Create Date: 15:34:32 07/21/2007
// Design Name:
// Module Name: QPSK
// Project Name:
// Target Devices:
// Tool versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//////////////////////////////////////////////////////////////////////////////////
module QPSK(clk, reset, x, y);
input clk; //系統工作時鐘
input reset; //系統控制信號
input x; //系統輸入信號
output y; //QPSK調制輸出信號
reg [2:0] cnt; //計數器
reg [1:0] x_x; //輸入信號的中間寄存器
reg [3:0] carriers; //4路載波信號
reg [1:0] y_y;
// 完成計數器,以期對模塊時鐘分頻
always @(posedge clk) begin
if(!reset)
cnt <= 3'b000;
else
cnt <= cnt +1;
end
//寄存輸入
always @(posedge clk) begin if(!reset) x_x <= 2'b00; else
if(cnt[1:0]==2'b11) x_x <= {x_x[0], x};
else
x_x <= x_x;end
// 產生載波信號
always @(posedge clk) begin if(!reset) carriers <= 4'b000; else begin
case(cnt)
3'b000: begin
y_y <= x_x;
carriers <= 4'b1100;
end
3'b010: carriers <= 4'b1001;
3'b100: carriers <= 4'b0011;
3'b110: carriers <= 4'b0110;
default: carriers <= carriers;
endcase
end end
assign y = (y_y == 2'b00) ? carriers[3] :
(y_y == 2'b01) ? carriers[2] :
(y_y == 2'b10) ? carriers[1] :
(y_y == 2'b11) ? carriers[0] : 0;
endmodule
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -