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. MyBatis-Spring(五)--MapperScannerConfigurer实现增删改查

    上一篇文章中已经介绍,MapperScannerConfigurer可以通过扫描的方式获取我们需要的mapper,而不需要我们自己去配置,它的基本配置如下: <bean class=" ...

  2. DVWA 之medium级别sql注入

    中级注入的提交方式从get请求改为post请求,可以用burp抓包注入或抓注入点 1 .  判断是否有注入 sqlmap -u "http://192.168.242.1/dvw/vulne ...

  3. 详解Spring MVC 4常用的那些注解

    Spring从2.5版本开始在编程中引入注解,用户可以使用@RequestMapping, @RequestParam, @ModelAttribute等等这样类似的注解.到目前为止,Spring的版 ...

  4. c++ 链接mysql:error LNK2019: 无法解析的外部符号

    使用VS2012编译项目报错如下: error LNK2019: 无法解析的外部符号 _mysql_real_connect@32,该符号在函数 _main 中被引用 error LNK2019: 无 ...

  5. /etc/inittab配置文件详解

    init的进程号是1,从这一点就能看出,init进程是系统所有进程的起点,Linux在完成核内引导以后,就开始运行init程序,init程序需要读取设置文件/etc/inittab.inittab是个 ...

  6. 唱吧基于 MaxCompute 的大数据之路

    使用 MaxCompute之前,唱吧使用自建体系来存储处理各端收集来的日志数据,包括请求访问记录.埋点数据.服务器业务数据等.初期这套基于开源组件的体系有力支撑了数据统计.业务报表.风控等业务需求.但 ...

  7. jquery版本冲突问题

    开发过程中,我们常常会遇到这种问题: 我们需要做一个新的功能,需要插入一个新的插件,使用新版的jquery,但原版的jquery已经被很多函数使用,不能直接修改.这时候我们可以现将$转移给$170($ ...

  8. JNI初级:android studio生成so文件详细过程

    本文主要参考blog:http://blog.csdn.net/jkan2001/article/details/54316375 下面是本人结合blog生成so包过程中遇到一些问题和解决方法 (1) ...

  9. [转]深入理解定位父级offsetParent及偏移大小

    偏移量(offset dimension)是javascript中的一个重要的概念.涉及到偏移量的主要是offsetLeft.offsetTop.offsetHeight.offsetWidth这四个 ...

  10. 建筑设计类软件整理ACDSee,PS,CAD,Ecotect,SketchUp,Phoenics,Revit,Rhino,

    关于建筑设计类软件整理 1 建筑设计类专业最常用软件如下,包括SU,CAD, REVIT,PS等. 2 sketch up 简称SU,中文名草图大师,在推敲方案,拉推体块时有着不可或缺的作用,而且随着 ...