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

📄 divider_cc.v

📁 a verilog programmed divide unit
💻 V
字号:
//definirea starilor automatului
`define	S0	9'b000000000   //maparea starii S0
`define S1	9'b101100010   //maparea starii S1
`define S2	9'b000010100   //maparea starii S2
`define S3	9'b000001000   //maparea starii S3
`define S4	9'b010000000   //maparea starii S4
`define S5	9'b000001001   //maparea starii S5
`define S6	9'b000000001   //maparea starii S6

module calea_de_control( start,ck,reset,zero,msb_p,	ld_A,shl_A,ld_B,
                        ld_C,dec_C,ld_P,shl_P,clr_P,ready);

input start;  
input ck;     
input reset;  

input zero;   //semnal de semnalizare de ZERO a valorii numaratorului
input msb_p;  //semnal pentru msb_p

output ld_A;  // semnal de incarcare reg_A
output shl_A; //semnal de shiftare stinga a reg_A
output ld_B;  //semnal de incarcare reg_B
output ld_C;  //semnal de incarcare a reg_C
output dec_C; // semnal de decrementare a reg_C
output ld_P;  //semnal de incarcare a valorii lui P
output shl_P; //semnal de shiftare stinga a lui P
output clr_P; // semnal de resetare a registrului P

// semnal de iesire 
output ready;

reg[9:0] stare;

always @(posedge ck or negedge reset)
if (!reset)
  stare<=`S0;
else
  case (stare)
    `S0:  if(start)
            stare <=`S1;
	  else 
	    stare <=`S0;
    `S1:  stare <= `S2;  
    `S2:  stare <= `S3;
    `S3:  stare <= `S4;
    `S4: if (zero)
           if (msb_p)
            stare <= `S5;
	   else
	    stare <= `S6;
          else
	    stare <= `S2;
   default: stare <= `S0;
endcase

assign {ld_A,shl_A,ld_B,ld_C,dec_C,ld_P,shl_P,clr_P,ready} = stare;

endmodule

⌨️ 快捷键说明

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