⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 decoder.v

📁 这是一个HDB3的译码器
💻 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 + -