0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

数字电路里面有什么元素需要被描述?

电子工程师 来源:未知 作者:李倩 2018-09-07 14:47 次阅读

初识Verilog描述-1

“Verilog不同于C,Python,JAVA等软件语言,Verilog是以数字电路知识为背景支撑,以对数字电路系统进行描述的一门语言。因此用Verilog描述数字电路,必须要有数字电路知识为背景支撑。否则描述出来的电路性能将会很差。本篇我们先了解一下最基本的Verilog对数字电路描述的方法与代码风格,具体语法细节在这不做过多解释。”

在了解Verilog基本构成之前,先要了解数字电路里面有什么元素需要被描述。

如下图所示,为一个实例电路外部原理图:

从外部看一个电路需要描述的元素如下:

电路名字

输入端口以及位宽

输出端口以及位宽

端口描述有两种方式。

以上图为例:

(1)

module share_1(

clk,

rst_n,

a,

b,

data_out

);

input clk;

input rst_n;

input[7:0] a;

input[7:0] b;

output[8:0] data_out;

(2)

module share_1(

input clk,

input rst_n,

input [7:0] a,

input [7:0] b,

output [8:0] data_out

);

下图为其内部电路结构:

电路内部需要描述元素有:

信号的类型:reg型(所有在always电路里面将要做改变的信号),wire型(电路信号连线)

如上例电路:输入信号本来就为电路信号连线,且在端口声明中已经声明,无需再做wire 声明。

输出信号data_out是寄存器的输出,因此声明为: reg[8:0] data_out;

节点信号add_out(对应电路上的OUT),为加法器的输出。如果加法器是用always块实现的,如下:

always @( * ) begin

add_out = a+b;

end

则声明为reg型: reg[8:0] add_out;

如果加法器是用assign语句实现的,如下:

assign add_out = a+b;

则声明为wire型: wire[8:0] add_out;

注意:所有声明必须带上位宽,否则系统工具将其默认为单位宽,如上信号add_out为9位宽,因此声明为 reg [8:0] add_out;

组合逻辑电路: 可以利用 assign 或者 always @(*) 语句描述。一般复杂的组合逻辑电路利用 always @(*)语句块描述。如上加法器的实现既可以用always语句实现,也可以利用assign语句实现。

寄存器(有如下几种常用的不同的寄存器模型):

(1) 时钟信号上升沿驱动,复位信号低电平有效,与时钟异步复位:

always @( posedge clk or negedge rst_n ) begin

if( !rst_n )

data_out <= 8h00;

else

data_out <= data_in;

end

(2)时钟信号上升沿驱动,复位信号高电平有效,与时钟异步复位:

always @( posedge clk or posedge rst ) begin

if( rst )

data_out <= 8h00;

else

data_out <= data_in;

end

(3) 时钟信号下降沿驱动,复位信号高电平有效,与时钟同步复位:

always @( negedge clk ) begin

if( rst_n )

data_out <= 8h00;

else

data_out <= data_in;

end

(4)时钟信号上升沿驱动,复位信号低电平有效,与时钟同步复位,并且带有高电平使能信号:

always @( posedge clk ) begin

if( !rst_n )

data_out <= 8h00;

else if( enable )

data_out <= data_in;

else

data_out <= data_out;

end

给出两种完整的描述方式,大家自行体会,电路功能为带寄存器输出的8位无符号数加法器:

(1)

module share_1(

clk,

rst_n,

a,

b,

data_out

);

input clk;

input rst_n;

input[7:0] a;

input[7:0] b;

output[8:0] data_out;

reg[8:0] data_out;

wire[8:0] add_out;

assign add_out = a+b;

always @( posedge clk or negedge rst_n ) begin

if( !rst_n )

data_out <= 9h00;                          

else

data_out <= add_out;                        

end

endmodule

(2)

module share_1(

input clk,

input rst_n,

input [7:0] a,

input [7:0] b,

output [8:0] data_out

);

reg[8:0] data_out ;

reg[8:0] add_out;

always @( * ) begin

add_out = a+b;

end

always @( posedge clk or negedge rst_n ) begin

if( !rst_n )

data_out <= 9h00;                        

else

data_out <= add_out;                      

end

endmodule

注:这里只是带着大家从电路入手,宏观的了解一下Verilog描述数字电路的结构与注意事项,具体语法可自行学习。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 逻辑电路
    +关注

    关注

    13

    文章

    471

    浏览量

    42216
  • Verilog
    +关注

    关注

    28

    文章

    1327

    浏览量

    109312
  • 数字电路
    +关注

    关注

    192

    文章

    1397

    浏览量

    79753

原文标题:初识Verilog描述-1

文章出处:【微信号:LF-FPGA,微信公众号:小鱼FPGA】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    什么是数字电路

    、波形图等来表达电路的主要功能。  随着计算技术的发展,为了分析、仿真与设计数字电路数字系统,还可以采用硬件描述语言,使用如ABEL语言等软件,借助计算机来分析、仿真与设计
    发表于 04-06 23:45

    数字电路及其应用

    数字电路及其应用当今时代,数字电路已广泛地应用于各个领域。本报将在“电路与制作”栏里,刊登系列文章介绍数字电路的基本知识和应用实例。麦|斯|艾|姆|P|CB样板贴片,麦1斯1艾1姆1科
    发表于 09-05 11:12

    华为《高速数字电路设计教材》

    华为《高速数字电路设计教材》这本书是专门为电路设计工程师写的。主要描述模拟电路原理在高速数字电路设计中的分析应用
    发表于 09-01 23:09

    华为《高速数字电路设计教材》

    华为《高速数字电路设计教材》这本书是专门为电路设计工程师写的。主要描述模拟电路原理在高速数字电路设计中的分析应用
    发表于 09-01 23:20

    高速数字电路设计中的四种类型的电抗

    四个电路概念区分了高频数字电路和低频数字电路的研究:电容、电感、共模电容、共模电感。这四个概念有助于我们对高速数字电路元素
    发表于 04-11 10:08

    数字电路的应用介绍

      当今时代,数字电路已广泛地应用于各个领域。本报将在“电路与制作”栏里,刊登系列文章介绍数字电路的基本知识和应用实例。    在介绍基本知识时,我们将以集成数字电路为主,该
    发表于 08-28 15:36

    新编数字电路数字逻辑

    内容简介  为适应电子信息时代的新形势和应用型本科院校培养应用型人才的迫切需要,经过教学改革与实践,我们编写了这本《新编数字电路数字逻辑》教材。全书共分8章,分别为:数字电路基础知识
    发表于 10-28 21:36

    DIY Protoboard数字电路

    描述DIY Protoboard 数字电路用于电子电路的 0.100" 原型板。这对数字和模拟设计都有好处
    发表于 07-27 06:31

    数字电路及其应用

    数字电路及其应用 编者的话  当今时代,数字电路已广泛地应用于各个领域。本报将在“电路与制作”栏里,刊登系列文章介绍数字电路的基本知识和应用实例。 
    发表于 04-07 09:38 3357次阅读

    数字电路设计

    数字电路设计 关于高速数字电路的电气特性,设计重点大略可分为三项: 正时(Timing) :由于数字电路
    发表于 08-26 19:08 2675次阅读

    数字电路

    数字电路篇,VHDL资料,又需要的下来看看
    发表于 08-08 17:03 66次下载

    什么是模拟电路 什么是数字电路

      模拟信号和数字信号的特点不同,处理这两种信号的方法和电路也不同。一般地, 电子电路可分为模拟电路数字电路两大类。    1. 模拟
    的头像 发表于 10-16 10:25 9.8w次阅读

    简析模拟电路数字电路

    模拟电路数字电路的关系,有说所有电路都是模拟电路数字电路只是模拟电路的一部分的;有说模拟
    发表于 07-03 17:35 9342次阅读

    VHDL概述及在描述数字电路时的结构

    本文介绍了一种硬件描述语言VHDL,以及它在描述数字电路时的结构。我们还将介绍一些介绍性的示例电路描述,并讨论“std_logical”和“
    发表于 07-21 11:30 2009次阅读
    VHDL概述及在<b class='flag-5'>描述</b><b class='flag-5'>数字电路</b>时的结构

    数字电路设计中什么时候需要分析竞争与冒险

    设计中,什么时候需要关心(分析)竞争与冒险? 3) 如何避免竞争与冒险导致的问题呢? 经过多年实际工作的实践与理解,在此文略作分析。 2. 竞争与冒险的产生 在数字电路中,调用一个AND gate,用verilog可以如下描述
    的头像 发表于 08-09 14:43 2718次阅读
    <b class='flag-5'>数字电路</b>设计中什么时候<b class='flag-5'>需要</b>分析竞争与冒险