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

📄 outctrl.v

📁 vcs tutorial lab1
💻 V
字号:
module OUTCTRL(COUNT, MODE, CLK, GATE, OUTENABLE, MODETRIG, LOAD, SETOUT_, CLROUT_,               RELOAD, OUT);  input        CLK,               GATE,               LOAD,               SETOUT_,               CLROUT_,               MODETRIG,               OUTENABLE;  input [ 3:1] MODE;  input [15:0] COUNT;  output       OUT,               RELOAD;  reg          OUT,               TRIG,               RETRIG,               RELOAD,               CLRTRIG;  always @(negedge CLK)    begin      // Clear Counter Reload Flag       RELOAD = 'b0;      // Clear Trigger Flag      CLRTRIG = 'b0;      if ((GATE || (MODE[3:1] == 1) || (MODE[3:1] == 5)) && OUTENABLE)        case (MODE[3:1])          0 : if (!COUNT)                begin                  // Set Out High On Terminal Count                  OUT = 'b1;                end          1 : if (COUNT)                begin                  if (TRIG & ~LOAD)                    OUT = 'b0;                end              else                begin                  // Set Out High When Counter Hits 0                  OUT = 'b1;                  // Do Not Retrigger                  CLRTRIG = 'b1;                end          2 : if (COUNT == 16'b1)                begin                  // Set Out Low When Counter Reaches 1                   OUT = 'b0;                  // Reload New Count                  RELOAD = 'b1;                end              else                begin                  // Set Out High When Counter Is Not 1                   OUT = 'b1;                end          3 : if (COUNT == 16'h2)                begin                  // Toggle Out When Counter Reaches 2                  OUT = ~OUT;                  // Reload New Count                  RELOAD = 'b1;                end          4 ,          5 : if (COUNT)                begin                  // Set Out High When Counter Is Not 0                  OUT = 'b1;                 end              else                if (TRIG)                  begin                    // Set Out Low When Counter Hits 0 And Was Triggered                      OUT = 'b0;                    CLRTRIG = 'b1;                  end        endcase    end  // Set OUT High Immediately When GATE Goes Low In Modes 2 and 3  always @(negedge GATE)    if ((MODE[3:1] == 2) || (MODE[3:1] == 3))      OUT = 'b1;  // Retrigger When GATE Goes High In Modes 1, 2 and 5  always @(posedge GATE)    if ((MODE[3:1] == 1) || (MODE[3:1] == 2) || (MODE[3:1] == 5))      RETRIG = 'b1;    else      RETRIG = 'b0;  // Set or Clear OUT After A Mode Write  always @(SETOUT_)    if (!SETOUT_)      assign OUT = 'b1;    else      deassign OUT;  always @(CLROUT_)    if (!CLROUT_)      assign OUT = 'b0;    else      deassign OUT;  // Counter Trigger Flag  always @(RETRIG or MODETRIG)    if (RETRIG || MODETRIG)      TRIG = 'b1;   always @(CLRTRIG)    if (CLRTRIG)      TRIG = 'b0; endmodule

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -