第一个Verilog程序:通用加法器
Verilog作为一门硬件描述语言,快速掌握它的方法就是不断的练习,反复动手实践,通过例子掌握隐藏在语句背后的硬件电路。下面是第一个需要学习的Verilog例子:
module adderN #(parameter N=)(
input[N-:] a,
input[N-:] b,
input cin,
output cout,
output[N-] sum
);
assign{cout,sum)=a+b+cin;
endmodule
1、该例子描述了一个4位加法器,从例子可以看出整个模块是以module开始,endmodule结束。每一个module都是一个完整的电路描述,其余都只能认为是电路片段。一个模块就是一个完整的电路,如果有N个模块,这N个模块将通过某种机制结合起来,组成一个大的电路,但这N个模块都是独立运行的,而且是并行执行的。
2、a,b前面有一个[N-1:0],这个表示a与b的位宽为N,最高位为第N-1位,最低位为0位,而cin没有位宽设定,则表示1位,对于任何有意义的逻辑变量(wire/reg,输入输出端口等),必须指定其位宽,如果没有显示的指定,位宽默认位1.
3、parameter类型用来定义全局符号常量,等效于C语言的参数设定。还有一个符号常量localparam,它和parameter的区别在于,parameter可以被外部调用模块改变,而localparam仅在本模块内部有效。
4、assign语句是连续赋值的意思。加法器是一个组合电路,当输入变化时,输出立即响应,而且这个过程是持续不断的。
5、对于{cout,sum}的理解:这是一种对两个变量合并赋值的简化描述,HDL语法解析器和综合器按照下面的理解对上述描述进行解析,并生成电路:
wire[N:] adder_temp;
//假设assgin {cout,sum}=adder_temp[N:0];
assign cout=adder_temp[N];
assign sum[N-:]=adder_temp[N-:];
第一个Verilog程序:通用加法器的更多相关文章
- 一个平时写程序通用的Makefile样例
//需要目标名和程序名字相同 .PHONY:clean all //伪目标 CC=gcc CFLAGS=-Wall -g BIN= //目标 all:$(BIN) %.o:%.c $(CC) $(CF ...
- 一个简单的通用Makefile实现
一个简单的通用Makefile实现 Makefile是Linux下程序开发的自动化编译工具,一个好的Makefile应该准确的识别编译目标与源文件的依赖关系,并且有着高效的编译效率,即每次重新ma ...
- 第一个Servlet程序及分析
第一个Servlet程序: package cc.openhome; import java.io.IOException; import java.io.PrintWriter; import ja ...
- Spark认识&环境搭建&运行第一个Spark程序
摘要:Spark作为新一代大数据计算引擎,因为内存计算的特性,具有比hadoop更快的计算速度.这里总结下对Spark的认识.虚拟机Spark安装.Spark开发环境搭建及编写第一个scala程序.运 ...
- .Net Core vs .Net Framework 如何为一个应用程序选择一个运行时
.Net Core是下一件大事吗?我已经使用了一段时间了,我倾向认为它是.事实上,我们推测,在2018年,对这项技术熟练的开发人员将会有巨大的需求.但是它和.Net Framework的区别是什么?你 ...
- .Net Core vs .Net Framework 如何为一个应用程序选择一个运行时(翻译)
.Net Core是下一件大事吗?我已经使用了一段时间了,我倾向认为它是.事实上,我们推测,在2018年,对这项技术熟练的开发人员将会有巨大的需求.但是它和.Net Framework的区别是什么?你 ...
- Servlet笔记2--模拟Servlet本质、第一个Servlet程序、将响应结果输出到浏览器中
以下代码均非IDE开发,所以都不规范,仅供参考 模拟Servlet本质: 模拟Servlet接口: /* SUN公司制定的JavaEE规范:Servlet规范 Servlet接口是Servlet规范中 ...
- K8S集群入门:运行一个应用程序究竟需要多少集群?
如果你使用Kubernetes作为应用程序的操作平台,那么你应该会遇到一些有关使用集群的方式的基本问题: 你应该有多少集群? 它们应该多大? 它们应该包含什么? 本文将深入讨论这些问题,并分析你所拥有 ...
- 一个老牌程序员说:做Java开发,怎么可以不会这 20 种类库和 API
随机推荐
- Jmeter-Maven-Plugin高级应用:Proxy Configuration
Proxy Configuration Pages 12 Home Adding additional libraries to the classpath Advanced Configuratio ...
- HttpContext.Current.Cache 和 HttpRuntime.Cache
HttpRuntime.Cache:用于winfrom 和 web HttpContext.Current.Cache 用于web .NET中Cache有两种调用方式:HttpContext.Curr ...
- WPF 下载网络文件 带进度条
附件:http://files.cnblogs.com/xe2011/WpfApplication3_downloadFile.rar 使用 private void Button ...
- 执行Socket socket = new Socket(ip, port);时抛出个异常:android.os.NetworkOnMainThreadException解决办法
首先,确认你的android版本是4.0之后再用此方法解决,因为在4.0之后在主线程里面执行Http请求才会报这个错,也许是怕Http请求时间太长造成程序假死的情况吧.Android在4.0之前的版本 ...
- Centering window on the screen
The following script shows how we can center a window on the desktop screen. #!/usr/bin/python # -*- ...
- MySQL user表简介
mysql> DESC MYSQL.USER \G *************************** . row *************************** Field: ...
- java各种框架的比较,分析
Spring 框架 优点 1.提供了一种管理对象的方法,可以把中间层的对象有效地组织起来 2.采用了分层结构,可以增量引入到项目中. 3.代码测试较容易 4.非侵入性,应用程序对Spring API的 ...
- 网站Web性能测试:ApacheBench,Webbench,http_load使用教程
网站Web性能测试:ApacheBench,Webbench,http_load使用教程 Web服务器 欲思 10个月前 (05-25) 0评论 一个网站或者博客到底能够承受多大的用户访问量经常是 ...
- laravel5.4中{{$name}} 和 {{!! $name !!}} 的区别:后者原生输出。前者转义
- android通过USB使用真机调试程序
我的机子很老,开启个android模拟器都要好几分钟,但幸亏有个android的真机,这样直接在andriod手机上调试也是一个不错的选择.下面我就介绍 一下使用android手机来调试android ...