5 EDA技术实用教程【基本语句2】_例化语句-程序员宅基地

技术标签: fpga开发  EDA复习  

1.过程赋值语句

a.阻塞式赋值(=)

特点:一旦执行完当前赋值语句,赋值变量即刻获得来自等号右边的表达式的计算值。如果在一个语句块中有多条阻塞式赋值语句,当执行到某条赋值语句时,其他语句被禁止执行,其语句特点与C等语言赋值语句类似。

b.非阻塞式赋值(<=)

特点:必须在语句块结束执行时才完成整体的赋值操作。可理解为在同一个语句块中,所有非阻塞式赋值语句并行运行。

 

注意:在同一过程中对同一变量赋值,阻塞式赋值和非阻塞式赋值不可混用。

2.Verilog例化语句及其用法

例化有调用复制的意思,例化的对象叫做实例或实体,通俗的说就是元件。

模块例化可以理解成模块调用。对于一个FPGA工程,通常是由一个顶层模块与多个功能子模块组成,为了实现顶层模块与子模块的连接,需要进行模块间的例化(或说是调用)。在一个FPGA项目工程中,其输入、输出端口命名通常在设计前期就已确定下来,但会存在一些中间变量,一个工程可能会让不同的工程师在不同的时间段内共同完成,不同的人对于这些变量的命名会有所不同,故例化很有必要。

举例:静态数码管显示
根据功能将 FPGA 顶层例化了以下两个功能子模块:计时模(time_count)和数码管静态显示模块(seg_led_static),如下图所示:

 1.计时模块

module time_count(
	input		clk ,                       // 时钟信号
	input		rst_n ,                     // 复位信号

	output reg  flag                        // 一个时钟周期的脉冲信号
);

//parameter define
	parameter MAX_NUM = 25000_000;         // 计数器最大计数值
......(省略功能代码)

endmodule

2.数码静态管显示模块

module seg_led_static ( 
	input 			 clk ,                // 时钟信号
	input 			 rst_n ,              // 复位信号(低有效)
	input 			 add_flag,            // 数码管变化的通知信号
	
	output reg [5:0] sel ,                // 数码管位选
	output reg [7:0] seg_led              // 数码管段选
 );
......(省略功能代码)
 
 endmodule

3.顶层模块(着重看下面“例化计时模块”、“例化数码管静态显示模块”)

module seg_led_static_top (
	input 		 sys_clk ,              // 系统时钟
	input 		 sys_rst_n,             // 系统复位信号(低有效)

	output [5:0] sel ,                  // 数码管位选
	output [7:0] seg_led                // 数码管段选
 );
 
 //parameter define
 parameter TIME_SHOW = 25'd25000_000;   // 数码管变化的时间间隔0.5s
 
 //wire define
 wire add_flag;                         // 数码管变化的通知信号

 //例化计时模块
time_count #(                           //参数例化使用’#‘
	.MAX_NUM (TIME_SHOW)
) u_time_count(
	.clk (sys_clk ),
 	.rst_n (sys_rst_n),
 	.flag (add_flag )
 );

//例化数码管静态显示模块
seg_led_static u_seg_led_static (
	.clk (sys_clk ),
 	.rst_n (sys_rst_n),

 	.add_flag (add_flag ),
 	.sel (sel ),
	.seg_led (seg_led )
 );

endmodule

上面给出了顶层模块的完整代码,子模块只有模块的端口和参数定义的代码。这是因为顶层模块对子模块做例化时,只需要知道子模块的端口信号名,而不用关心子模块内部具体是如何实现的。

如果子模块内部使用parameter 定义了一些参数,Verilog 也支持对参数的例化(也叫参数的传递),即顶层模块可以通过例化参数来修改子模块内定义的参数。

下图为模块例化。

 Verilog例化语句一般格式如下:

<模块元件名>    <例化元件名>( .例化元件端口(例化元件外接端口名),...);

再举一个简单的例化语句:

h_adder    U2(.A(net1),.SO(sum),.B(cin),.CO(net3));
//端口名关联法


h_adder:待调用的元件名

U2:用户在特定情况下调用元件h_adder而取的名字,即例化名

.A(net1):A就是例化元件端口名,也即原始h_adder模块文件中已定义的端口名

net1:U2的A端将要连接的连线名或其他元件的端口名,也称外部端口名。

还有一种连接表述方法称为位置关联法:

hadder_U1(ain,bin,net1,net2)
//位置关联法

连接信号与端口表位置要严格对应

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_55025444/article/details/127609504

智能推荐

NFC技术演进_nfc的演进-程序员宅基地

文章浏览阅读289次。RF演进protocol 演进_nfc的演进

1.3 wait 和notify 原理_wait 和 notify原理-程序员宅基地

文章浏览阅读384次。wait 和notify 是实现线程之间的协同工作,必须结合synchronized使用,wait 释放锁,notify 不释放锁(但是此时会通知在等待的wait,该notify完全执行完毕,才真正释放锁)public class DemoThread18{ //原子类 private volatile List&lt;String&gt; list = new ArrayList..._wait 和 notify原理

谷歌又出浏览器了Google Chrome_谷歌浏览器 我是人类-程序员宅基地

文章浏览阅读601次。相信大部分 做ui的朋友 都非常痛恨一件事情 就是程序以及css和不同浏览器的兼容问题,我就奇怪了google你不好好的做你的搜索引擎,弄什么浏览器呀,本让现在 作东西考虑各个浏览器兼容 已经够累的,你还真会添乱。本来做你就做也无所谓,还花那么大力气推广,要不说你有钱,有了用户群,写东西就不得不考虑你了,大哥我们这些 闷头写程序的不容易,我们还要养家户口呢,你就别添乱了行不行。 _谷歌浏览器 我是人类

微信公众号在线选房电子选车位房地产云开盘线上大屏幕抢房系统-程序员宅基地

文章浏览阅读551次,点赞18次,收藏9次。前端演示咨询客服:

MAKO Vimba2.0安装教程和qt中调用Vimba相机_vimba viewer-程序员宅基地

文章浏览阅读6.4k次,点赞7次,收藏29次。一、MAKO Vimba2.0安装教程1. 打开Vimba2.0安装软件,用户可到大恒官网下载最新驱动。2.选择选项Application Development和安装路径,注意:安装路径中不要存在空格。然后,点击Star,开始安装。 3.勾选Install Vimba Drivers,然后,点击Exit退出。4.接下来继续安装,勾选-选择“安装”,重复操作..._vimba viewer

【Linux4.1.12源码分析】协议栈报文接收之传输层处理分析(UDP)___udp4_lib_rcv-程序员宅基地

文章浏览阅读3k次。UDP报文的处理入口是udp_rcv函数,该函数是在ip_local_deliver_finish函数中被调用的。1、udp_rcv函数int udp_rcv(struct sk_buff *skb){ return __udp4_lib_rcv(skb, &udp_table, IPPROTO_UDP);}2、__udp4_lib_rcv函数int __udp4_lib_rcv___udp4_lib_rcv

随便推点

HOG特征——行人识别_hog特征识别行人 peopledetector=vision.peopledetector; i=-程序员宅基地

文章浏览阅读1.8k次,点赞4次,收藏24次。HOG特征简介HOG 全称为 Histogram of Oriented Gradients ,即方向梯度的直方图。HOG 是由 Navneet Dalal & Bill Triggs 在 CVPR 2005发表的论文中提出来的,目的是为了更好的解决行人检测的问题。先来把这几个字拆开介绍,首先,梯度的概念和计算梯度的方法已经在前一篇文章中介绍了,方向梯度就是说梯度的方向我们也要利用上,..._hog特征识别行人 peopledetector=vision.peopledetector; i=imread(

Spring Cloud 微服务的安全保护_springboot微服务安全-程序员宅基地

文章浏览阅读2.8k次,点赞2次,收藏9次。上一篇文章中介绍了如何使用Spring Cloud搭建微服务,在本文中讲讲如何对微服务进行安全保护。在Spring Cloud中对应用进行安全保护通常使用Spring Security,这种方式集成起来非常简单而且很容易扩展现有的应用场景。在分布式环境中Spring Security使用Spring Session和Redis来共享会话。共享会话可以将在微服务网关中登录的用户验证信息传递到系统..._springboot微服务安全

生物信息学中两种常用的文本文件_.fa.gz-程序员宅基地

文章浏览阅读961次。通过自学《碱基矿工》[http://mp.weixin.qq.com/mp/homepage?__biz=MzAxOTUxOTM0Nw==&hid=1&sn=d945cf61bd86e85724e146df42af5bcc&scene=18#wechat_redirect]下面分别介绍这两种格式FASTAFASTA常作为存储有顺序的序列数据的文件后缀,包括我们常用的..._.fa.gz

【centos安装mysql服务器并开启远程访问】_centos 查看 mysql 远程连接-程序员宅基地

文章浏览阅读1k次。centos安装mysql如果设置的密码太简单了会报错( ERROR 1819 (HY000): Your password does not satisfy the current policy requirements)解决方案如下:登录mysql执行:第一个密码强度等级,第二个是密码长度设置为6位(如果你设置的是8位就不做修改)另外可以通过语句查看密码设置规则2 赋权所有远程ip都可以进行登录(如果未开放端口得需要去腾讯云或者阿里云官网实例防火墙与策略开启端口,mysql默认的_centos 查看 mysql 远程连接

Linux(centos)下Nginx+Keepalived集群环境搭建_linux搭建nginx+keepalived-程序员宅基地

文章浏览阅读299次。本人使用的环境是CentOS-6.4-x86_64-bin-DVD1.rar,nginx-1.6.2.tar.gz,keepalived-1.2.18.tar.gz。三台机器ip:192.168.1.123,192.168.1.124。同时关闭两台虚拟机的防火墙:chkconfig iptables off(永久关闭防火墙)..._linux搭建nginx+keepalived

WebMagic Java 爬虫的简单应用_webmagic没反应-程序员宅基地

文章浏览阅读2k次。前段时间做旅游本体的知识库,我和老师反应说景点之间关系太少了,导致整个图很稀疏。。“你去wiki上抓一批数据吧”,就这样被自己坑了。由于一直在用java做项目,ZWQ师兄推荐的是selenium,这个我想说真的很强大,还支持JS渲染,不过当我看到这篇的时候,我决定学一下WebMagic。项目中文文档地址:http://webmagic.io/docs/zh/这个项目很容易上手,只要_webmagic没反应