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

    文章

    492

    浏览量

    42544
  • Verilog
    +关注

    关注

    28

    文章

    1343

    浏览量

    109935
  • 数字电路
    +关注

    关注

    193

    文章

    1596

    浏览量

    80435

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

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

收藏 人收藏

    评论

    相关推荐

    数字电路和模拟电路的工作各有何特点?

    数字电路和模拟电路电路设计和控制中两种主要的电路类型。虽然它们都是电路的基本组成部分,但它们在工作原理、特点和应用方
    的头像 发表于 12-08 10:06 2394次阅读

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

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

    数字电路设计

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

    《VHDL与数字电路设计》

    《VHDL与数字电路设计》是有卢毅、赖杰主编的,主要介绍涉及数字系统设计的多方面原理、技术及应用,主要内容有数字系统的基本设计思想、设计方法和设计步骤, VHDL 硬件描述语言
    发表于 07-11 15:54 0次下载
    《VHDL与<b class='flag-5'>数字电路</b>设计》

    数字电路

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

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

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

    数字电路比模拟电路的优点

    本文主要详细介绍了数字电路比模拟电路的优点,分别是数字电路结构简单、数字电路容易标准化、数字电路能够满足对信号保真度的要求。
    发表于 05-16 17:50 1.8w次阅读

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

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

    基于FPGA的数字电路设计

    数字电路作为一门专业基础课,除了介绍数字电路的理论知识外,更需要通过配套的实验平台将理论知识和实践环节相结合,培养学生的动手能力和实践创新能力。
    的头像 发表于 08-16 12:03 7435次阅读
    基于FPGA的<b class='flag-5'>数字电路</b>设计

    数字电路设计的基本流程

    数字电路设计是数字电路最为关键及重要的一步,今天我们将从各个流程为大家介绍完整的数字电路设计!
    的头像 发表于 07-10 17:14 7620次阅读

    建立/保持时间对数字电路的影响

    之一,它对数字电路的运作和性能产生着重要的影响。在本文中,我们将探讨时间与数字电路之间的关系,并分析它对于数字电路性能的影响。 数字电路包括各类逻辑门、计数器、触发器和存储器等多种器件
    的头像 发表于 10-29 14:21 669次阅读