No.2 Verilog 模块和描述风格
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 模块和描述风格的更多相关文章
- Verilog模块概念和实例化#转载自Jason from Lofter
Verilog模块概念和实例化 模块的概念 模块(module)是verilog最基本的概念,是v设计中的基本单元,每个v设计的系统中都由若干module组成. 1.模块在语言形式上是以关键词modu ...
- 如何将自己写的verilog模块封装成IP核
如何将自己写的verilog模块封装成IP核 (2014-11-21 14:53:29) 转载▼ 标签: 财经 分类: 我的东东 =======================第一篇========= ...
- 利用python自动生成verilog模块例化模板
一.前言 初入职场,一直忙着熟悉工作,就没什么时间更新博客.今天受“利奇马”的影响,只好宅在家中,写写技术文章.芯片设计规模日益庞大,编写脚本成了芯片开发人员必要的软技能.模块端口动不动就几十上百个, ...
- 浅谈Verilog HDL代码编写风格
消失了好久,没有写文章,也没有做笔记,因为最近再赶一个比赛,时间很紧,昨天周六终于结束了,所以趁着周末这会儿有时间,写点东西,记录下来.首先我学习FPGA才一年多,我知道自己没有资格谈论一些比较深层次 ...
- Verilog 模块参数重定义(转)
Verilog重载模块参数: 当一个模块引用另外一个模块时,高层模块可以改变低层模块用parameter定义的参数值,改变低层模块的参数值可采用以下两种方式: 1)defparam 重定义参数语法:d ...
- Link带参数的Verilog模块(Design Compiler)
在Design Compiler中,Verilog文件可以用read_verilog命令读入,用link命令连接.以下是连接两个文件RegisterFile.v和Test.v的脚本: # Read d ...
- verilog 常见单元描述
半加器: //行为级建模 module half_adder2(a, b, sum, c_out); input a, b; output sum, c_out; assign {c_out, sum ...
- 对Verilog 初学者比较有用的整理(转自它处)
*作者: Ian11122840 时间: 2010-9-27 09:04 ...
- Scheme实现数字电路仿真(3)——模块
版权申明:本文为博主窗户(Colin Cai)原创,欢迎转帖.如要转贴,必须注明原文网址 http://www.cnblogs.com/Colin-Cai/p/12242650.html 作者:窗户 ...
随机推荐
- Django项目:CMDB(服务器硬件资产自动采集系统)--01--01CMDB获取服务器基本信息
AutoClient #settings.py # ————————01CMDB获取服务器基本信息———————— import os BASEDIR = os.path.dirname(os.pat ...
- python3 新特性
1.格式化字符串f-string user = "Mike" log_message = f'User{user} has logged in' 2.路径管理库Pathlib 3. ...
- uni-app中不使用scroll-view组件,监听页面滑直底部事件
最终达到的目标效果 将要用到 监听页面滚动事件:onPageScroll 获取节点信息uni.createSelectorQuery() 标签布局 <template> <view ...
- VS2012与windos版本不兼容问题
昨天晚上加完班,想着把windows更新下.今天上午就发现再运行VS报错了,提示VS2012与windows版本不兼容,打开.sln文件后,VS自动关闭.错误如下: 查看后网上提示安装VS2012的一 ...
- CentOS 6.5 服务器相关配置
vi /etc/sysconfig/network-scripts/ifcfg-eth0 #配置网卡 ONBOOT=YES #静态IPBOOTPROTO=static #启用地址协议 --static ...
- nodejs package.json说明
{ "name": "test", //项目名称(必须),由小写英文字母.数字和下划线,不能含空格 "version": "1.0 ...
- SVN添加自动忽略文件.settings .project .classpath target等
eclipse svn提交忽略文件及文件夹,ignore设置无效.. 一.方法: 1. 将文件夹或文件从Eclipse中删除.记得要在Eclipse中删除,而不是Windows文件管理界面删除. 2. ...
- SSM-8FastDfs搭建
1. 图片服务器的安装 1.存储空间可扩展. 2.提供一个统一的访问方式. 使用FastDFS,分布式文件系统.存储空间可以横向扩展,可以实现服务器的高可用.支持每个节点有备份机. 1.1. 什么是F ...
- 用js实现base64编码器
base-64作为常见的编码函数,在基本认证.摘要认证以及一些HTTP扩展中得到了大量应用.在前端领域,也常常把图片转换为base-64编码在网络中传输.本文将详细介绍base64的原理及用js实现b ...
- 神奇的CSS形状
在StackOverflow上有这么一个问题,有位同学在 http://css-tricks.com/examples/ShapesOfCSS/ 找到一些使用CSS做的形状,其中一位同学对下面的这个形 ...