📄 decoder.v
字号:
module Decoder(clk,clr,data_p,data_n,data_out);
input clk,clr;
input data_p,data_n; // HBD3 码以上下行输入 正是01,负是10,零是00
output data_out;
reg [4:0] data_reg; // 输出data_reg 之前的暂存
reg [4:0] d_n; // 下行输入数据的暂存
reg [4:0] d_p; // 上行输入数据的暂存
wire data = data_p + data_n; // 判断是不是零电平
always @(posedge clk or posedge clr)
if(clr)
begin
data_reg=0; d_n=0; d_p=0; // 初始态清零
end
else
begin //破坏符号V总是与前一位的非零元极性相同
if(data_reg[4:2]==3'b001 && data && (data_n==d_n[2] || data_p==d_p[2])) //如果输入后是1001
data_reg={4'b0000,data_reg[1]}; //修改前四位为0000
else
if(data_reg[4:1]==4'b0001 && data && (data_n==d_n[1] || data_p==d_p[1])) //如果输入后是10001
data_reg=5'b00001; //修改为00001
else
data_reg={data,data_reg[4:1]}; //输入码从最高位存入
d_n={data_n,d_n[4:1]}; //下行输入
d_p={data_p,d_p[4:1]}; //上行输入
end
assign data_out=data_reg[0]; //解码从最低位输出,将两行变成一行输出
endmodule
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -