您当前的位置:五五电子网电子知识电子学习基础知识电脑-单片机-自动控制VHDL设计之逻辑综合的原则以及可综合的代码设计风格 正文
VHDL设计之逻辑综合的原则以及可综合的代码设计风格

VHDL设计之逻辑综合的原则以及可综合的代码设计风格

点击数:7486 次   录入时间:03-04 11:47:46   整理:http://www.55dianzi.com   电脑-单片机-自动控制
                                        //通过实例化该原语,实现三态门的调用
endmodule

 

例4.15:三态双向驱动器设计实例。

module bidir(tri_inout,out,in,en,b);        //模块声明
      inout tri_inout;
      output out;
      input in,en,b;                            //端口声明
      assign tri_inout = en? in : 'bz;      //三态门的输入为in
      assign out = tri_inout ^ b;            //三态门的输出为b
endmodule


2.时序逻辑电路设计实例
例4.16:触发器设计实例。

module dff( q,data,clk);                  //模块声明
      output q;
      input data,clk;                      //端口声明
      reg q;
      always @( posedge clk ) begin      //边缘检测
            q = data;                        //通过always语句,实现触发器
      end
endmodule

 

例4.17:电平敏感型锁存器设计实例一(assign语句)。

module latch1( q,data,clk);                //模块声明
      output q;
      input data,clk;                        //端口声明
      assign q = clk ? data : q;          //通过assign语句,实现的是一个锁存器
endmodule

 

例4.18:带置位和复位端的电平敏感型锁存器设计实例二(assign语句)。

module latch2( q,data,clk,set,reset);  //模块声明
      output q;
      input data,clk,set,reset;          //端口声明
      assign q= reset ? 0 : ( set? 1:(clk? data : q ) );
                                              //通过assign语句,实现的是一个锁存器
                                              //其中,set为置位端,reset为复位端
                                              //在clk为高电平时,锁存data,否则保持q值
endmodule

 

例4.19:电平敏感型锁存器设计实例三(always块)。

module latch3( q, data, clk);          //模块声明
      output q;
      input data,clk;                      //端口声明
      reg q;
      always @(clk or data) begin      //电平检测
            if(clk)                        //clk为高电平时,q锁存data值
                  q = data;
      end
endmodule

 

  注意 有的综合器会产生一个警告信息,提示将产生了一个电平敏感型锁存器。因为此例中设计的就是一个电平敏感型锁存器,所以这个警告信息是没有问题的。

 

例4.20:移位寄存器设计实例。

module shifter( din,clk,clr,dout);        //模块声明
      input din,clk,clr;
      output [7:0] dout;                    //端口声明
      reg [7:0] dout;
      always @(posedge clk) begin
            if(clr)                            //清零
                  dout = 8'b0;
            else begin
                  dout = dout<<1;            //左移一位
                  dout[0] = din;            //把输入信号放入寄存器的最低位
            end
      end
endmodule


例4.21:8位计数器设计实例一。

上一页  [1] [2] [3] [4] [5]  下一页


本文关键字:风格  电脑-单片机-自动控制电子学习 - 基础知识 - 电脑-单片机-自动控制