📄 convencdja.v
字号:
`timescale 1ns/10ps
// TOP_ENCODE
//--------------------
module top_encode(clk, rst, dataIn, serialData, parData);
input clk, rst, dataIn;
output serialData;
output [1:0] parData;
wire serialData;
wire [1:0] parData;
conv_encode conv_encode_1(clk, rst, dataIn, serialData);
ser2par ser2par_1(clk, rst, serialData, parData);
endmodule
// conv_encode
//-------------------------------
module conv_encode(clk, rst, x_unsync, z);
input clk, rst, x_unsync;
output z;
wire x_unsync;
reg x, z;
reg u1, u2;
reg[1:0] ShftReg;
// The encoder shift register and a synchronizing flip-flop.
always@(posedge clk or posedge rst)
begin: reg_gen
if (rst)begin
ShftReg <= 0;
x <= 0;
end
else begin
ShftReg <= {x,ShftReg[1]};
x <= x_unsync;
end
end
// The MUX
always@(clk or x or ShftReg)
begin: output_gen
u1 = (x^ShftReg[1]^ShftReg[0]);
u2 = (x^ShftReg[0]);
z = (clk)? u2:u1;
end
endmodule
// ser2par
//-------------------------------
module ser2par(clk, rst,serialData, parData);
input clk, rst, serialData;
output [1:0] parData;
reg [1:0] parData;
reg serDataLatch;
wire clk, rst, serialData;
// The flip-flops for serial to parallel conversion
always @(posedge clk or posedge rst)
if (rst) parData <= 0;
else parData <= {serialData, serDataLatch};
//The latch for serial to parallel conversion
// synopsys async_set_reset "rst"
always @(clk or rst or serialData)
if (rst) serDataLatch <= 0;
else if (clk) serDataLatch<=serialData;
endmodule
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -