2-1 模块

  Verilog语言基本的描述单元----模块,模块是用来描述某个设计的功能或结构,以及它与其它外部模块进行通信的端口。

  module module_name(port_list);
Declarations: //声明
reg, wire, parameter,
input, output, inout,
function, task,...
Statements: //语句
Initial statement
Always statement
Module instantiation
Gate instantiation
UPD instantiation
Continuous assignment
Generate statement
endmodule

2-2 描述风格

2-2-1 延时

  Verilog 的所有延时都是按时间单位来定义的,时间单位声明应该在模块声明之前。

‘timescale 1ns/100ps //延时时间单位1ns,时间精度100ps

2-2-2 描述风格

1、数据流描述----使用连续性赋值语句 assign

assign [delay] DEST = SRC;

*当右边的表达式的操作数无论何时发生变化,右边的表达式都会重新计算,并在指定延时后赋给左边的线网变量。

 ‘timescale 1ns/100ps
module decoder_24(A, B, EN, Q);
input A, B, EN;
output [:] Q;
wire Abar, Bbar;
assign # Abar = ~A;
assign # Bbar = ~B;
assign # Q[] = ~(Abar & Bbar & EN);
assign # Q[] = ~(Abar & B & EN);
assign # Q[] = ~(A & Bbar & EN);
assign # Q[] = ~(A & B & EN);
endmodule

2、行为描述----initial、always

(1)initiial: 只执行一次;

(2)always:总是在循环执行。

所有的initial和always语句都在0时刻并行执行。

 ‘timescale 1ns/100ps

 module adder1(a, b, cin, sum, cout);//一位全加器
input a, b, cin;
output sum, cout; always @(a or b or cin) begin
sum <= (a^b)^cin;
cout <= ((a&cin)|(b&cin)|(a&b));
end
endmodule module test(lr ,rn); //initial示例
output reg lr, rn;
initial
begin
lr = ;
rn = ;
lr = # ;
rn = # ;
end
endmodule

3、结构描述----基于逻辑门电路的设计风格

 //一位全加器

 module adder1(a, b, cin, sum, cout);
input a, b, cin;
output sum, cout;
wire s1, t1, t2, t3;
xor
ux1(s1, a, b),
ux2(sum, s1, cin);
and
tm1(t1, a, b),
tm2(t2, a, cin),
tm3(t3, b, cin);
or
uo(cout, t1, t2, t3);
endmodule //四位全加器 module Adder4(fa, fb, fcin, fsum, fcout);
parameter size = ;
input [size : ] fa, fb;
input fcin;
output [size : ] fsum;
output fcout;
wire [size - : ] ftemp; adder1 //按对应端口名连接
ufa1(.a(fa[]), .b(fb[]), .cin(fcin), .sum(fsum[]), .cout(ftemp[])),
//ufb1(fa[0], fb[0], fcin, fsum[0], ftemp[0]), //按端口顺序连接,下同
ufa2(.a(fa[]), .b(fb[]), .cin(ftemp[]), .sum(fsum[]), .cout(ftemp[])),
ufa3(.a(fa[]), .b(fb[]), .cin(ftemp[]), .sum(fsum[]), .cout(ftemp[])),
ufa4(.a(fa[]), .b(fb[]), .cin(ftemp[]), .sum(fsum[]), .cout(fcout));
endmodule

4、混合设计风格

在模块中,可混合使用前面三种设计风格,这样可以帮助我们更高效地进行设计开发,但要注意不同类型语句的语法使用规范。

No.2 Verilog 模块和描述风格的更多相关文章

  1. Verilog模块概念和实例化#转载自Jason from Lofter

    Verilog模块概念和实例化 模块的概念 模块(module)是verilog最基本的概念,是v设计中的基本单元,每个v设计的系统中都由若干module组成. 1.模块在语言形式上是以关键词modu ...

  2. 如何将自己写的verilog模块封装成IP核

    如何将自己写的verilog模块封装成IP核 (2014-11-21 14:53:29) 转载▼ 标签: 财经 分类: 我的东东 =======================第一篇========= ...

  3. 利用python自动生成verilog模块例化模板

    一.前言 初入职场,一直忙着熟悉工作,就没什么时间更新博客.今天受“利奇马”的影响,只好宅在家中,写写技术文章.芯片设计规模日益庞大,编写脚本成了芯片开发人员必要的软技能.模块端口动不动就几十上百个, ...

  4. 浅谈Verilog HDL代码编写风格

    消失了好久,没有写文章,也没有做笔记,因为最近再赶一个比赛,时间很紧,昨天周六终于结束了,所以趁着周末这会儿有时间,写点东西,记录下来.首先我学习FPGA才一年多,我知道自己没有资格谈论一些比较深层次 ...

  5. Verilog 模块参数重定义(转)

    Verilog重载模块参数: 当一个模块引用另外一个模块时,高层模块可以改变低层模块用parameter定义的参数值,改变低层模块的参数值可采用以下两种方式: 1)defparam 重定义参数语法:d ...

  6. Link带参数的Verilog模块(Design Compiler)

    在Design Compiler中,Verilog文件可以用read_verilog命令读入,用link命令连接.以下是连接两个文件RegisterFile.v和Test.v的脚本: # Read d ...

  7. verilog 常见单元描述

    半加器: //行为级建模 module half_adder2(a, b, sum, c_out); input a, b; output sum, c_out; assign {c_out, sum ...

  8. 对Verilog 初学者比较有用的整理(转自它处)

    *作者: Ian11122840    时间: 2010-9-27 09:04                                                              ...

  9. Scheme实现数字电路仿真(3)——模块

    版权申明:本文为博主窗户(Colin Cai)原创,欢迎转帖.如要转贴,必须注明原文网址 http://www.cnblogs.com/Colin-Cai/p/12242650.html 作者:窗户 ...

随机推荐

  1. Django项目:CRM(客户关系管理系统)--69--59PerfectCRM实现king_admin行内编辑

    #base_admin.py # ————————24PerfectCRM实现King_admin自定义操作数据———————— from django.shortcuts import render ...

  2. PAT甲级——A1037 Magic Coupon

    The magic shop in Mars is offering some magic coupons. Each coupon has an integer N printed on it, m ...

  3. Spring Cloud Security&Eureka安全认证(Greenwich版本)

    Spring Cloud Security&Eureka安全认证(Greenwich版本) 一·安全 Spring Cloud支持多种安全认证方式,比如OAuth等.而默认是可以直接添加spr ...

  4. 在Ubuntu Server 14.04上源码安装Odoo 9.0

    1. 更新Ubuntu服务器软件源 sudo apt-get update #更新软件源 sudo apt-get dist-upgrade #更新软件包,自动查找依赖关系 sudo shutdown ...

  5. php5.3中namespace的说明,帮助初次接触namespace的phper快速理解

    命名空间一个最明确的目的就是解决重名问题,PHP中不允许两个函数或者类出现相同的名字,否则会产生一个致命的错误.这种情况下只要避免命名重复就可以解决,最常见的一种做法是约定一个前缀,但是方法名变的很长 ...

  6. Windows Apache httpd-vhosts.conf

    <VirtualHost *:> DocumentRoot "D:\wamp\www" ServerName localhost </VirtualHost> ...

  7. git与github建立链接(学习笔记)

    总结步骤: 1.将所有文件添加到本库 git add . 2. git commit -m "提示信息随便写" 3.查看git修改状态 git status 4.获取远程库与本地同 ...

  8. 调用本地摄像头并通过canvas拍照

    首先我们需要新建一个video标签,并且放到html里边 var video = document.createElement("video"); video.autoplay=& ...

  9. java -cp ../../DESUtil/ Hello,用-cp指定classpath

    运行hello.class 文件 怎么用 java +路径 就是不在class目录下运行 怎么做??? 我想要的是 java 直接去运行某个路径下的class文件 不想到它的目录那里再java hel ...

  10. MySQL下载安装详情教程(Windows)

    1.下载MySQL数据库可以访问官方网站:https://www.mysql.com/ 2.点击DOWNLOADS模块下的Community模块下的MySQL Community Server进行下载 ...