19 verilog基础语法-可综合设计
基础 设计 语法 19 综合 Verilog
2023-09-14 09:16:17 时间
虚拟机:VMware-workstation-full-14.0.0.24051
环 境:ubuntu 18.04.1
应用工具:VCS(verilog compiled simulator,编译型代码仿真器)
一、学习内容
二、语法举例
(1)可综合
- and, or, nand等基本逻辑门
- if块和case块
- +, -, *, &, | , ^, ~等逻辑运算符
- &&, ||, ==, >, >=, <, <=, !=, !等关系运算符
- << , >>, &(按位与), |(按位或),{ }(连接运算)等位操作运算符
- =,<=,assign等赋值语句
- always块
(2)不可综合
- initial块
- forever块
- repeat, force, release, task, enable, disable一般不可综合
- 系统函数如$display等
- #延时赋值语句一般综合时会被忽略
【例 1】一个采样锁存模块
这是一个采样锁存模块,在时钟上升沿锁存输入数据din到寄存器data(四位)中,dout连到data寄存器的输出。 data对应的是带复位端的寄存器,其时钟信号为clk(上升沿有效),复位信号为rstn(低电平有效)。
module sample_ff(clk, rstn, din, dout);
input clk, rstn;
input [3:0] din;
output [3:0] dout;
reg [3:0] data;
assign dout = data;
always @(posedge clk or negedge rstn) begin
if(!rstn) begin
data <= 4’b0;
end
else begin
data <= din;
end
end
endmodule
【例 2】一个采样锁存模块
这也是一个采样锁存模块,但是data对应的不是寄存器(register)而是锁存器(latch)
module sample_latch(clk, rstn, din, dout);
input clk, rstn;
input [3:0] din;
output [3:0] dout;
reg [3:0] data;
assign dout = data;
always @(clk or rstn) begin
if(!rstn) begin
data <= 4’b0;
end
else if(clk) begin
data <= din;
end
end
endmodule
【例 3】一个四选一的多选器
这是一个四选一的多选器,虽然用了always块,但是对应的电路结构是一个纯组合逻辑。
module mux4(sel, a, b, c, d, z);
input [1:0] sel;
input a, b, c, d;
output z;
reg z;
always @(sel or a or b or c or d) begin
case(sel)
2'b00 : z <= a;
2'b01 : z <= b;
2'b10 : z <= c;
2'b11 : z <= d;
endcase
end
endmodule
三、思考和小结
(1)思考
- 下列中哪些是可综合的、哪些是不可综合的
• initial块
• forever块
• repeat, force, release
• assign赋值语句
• always块
(2)小结
作者:xlinxdu
版权:本文版权归作者所有
转载:未经作者允许,禁止转载,转载必须保留此段声明,必须在文章中给出原文连接。
相关文章
- [报表篇]-Ureport报表设计器-基础组件配置
- linux必须运行在enforcing,Linux(入门基础):97—SELinux三种模式的启动、关闭、查看(getenforce、setenforce、sestatus、restorecon)…
- 各种系统下基础命令与界面操作
- IC设计基础 | 数字IC设计经典笔试题
- 大数据必学Java基础(六十五):阻塞队列介绍
- NetWork | DHCP基础原理
- 【学习笔记】Python基础
- 结构建模设计——Solidworks软件之在已建模型的基础上进行特征修改及模型报错的解决方法实战
- 【图论】图论基础(搜索、最短路、并查集、最小生成树、拓扑排序)
- PCB走线基础(一):电源完整性与PDN设计
- FPGA零基础学习之Vivado-数码管驱动设计实验
- postgresql数据库基础 之 实现时间范围查询
- [三]JavaIO之IO体系类整体设计思路 流的概念以及四大基础分类详解编程语言
- MySQL的基础语法指南(mysql的基本语法)
- Linux 基础知识与实际应用(linux基础与应用)
- 物理设计SQL Server中的逻辑与物理设计:有效构建数据库的重要基础(sqlserver逻辑与)
- 者Oracle SQL初学者突破入门,打好基础(oracle sql初学)
- Oracle EBS融合构建强大的业务基础(oracle ebs合并)