verilog 常见单元描述
半加器:
//行为级建模
module half_adder2(a, b, sum, c_out);
input a, b;
output sum, c_out;
assign {c_out, sum} = a + b;
endmodule
// 结构级建模
module half_adder(a, b, sum, c_out);
input a, b;
output sum, c_out;
xor (sum, a, b);
and (c_out, a, b);
endmodule
进位选择加法器:
多路复用器:
//行为模型
module Mux_4_32_case(
output [:] mux_out,
input [:] data_3, data_2, data_1, data_0,
[:] select,
input enabel
);
reg [:] mux_int;
assign mux_out = enable ? mux_int : 32b'z;
always @ (data_3, data_2, data_1, data_0, select)
case (select)
: mux_int = data_0;
: mux_int = data_1;
: mux_int = data_2;
: mux_int = data_3;
default: mux_int = 32b'x; //当select包含z or x时的状态,不加default vivado综合出来的电路图没有区别,但是不知道在tb上会不会出问题
endcase
endmodule
//使用if条件语句行为级建模
module Mux_4_32_if(
output [:] mux_out,
input [:] data_3, data_2, data_1, data_0,
input [:] select,
input enable
);
reg [:] mux_int;
assign mux_out = enable ? mux_int : 'bz;
always @(data_3, data_2, data_1, data_0, select)
if(select == 'b00) mux_int = data_0; else
if(select == 'b01) mux_int = data_1; else
if(select == 'b10) mux_int = data_2; else
if(select == 'b11) mux_int = data_3; else
mux_int = 'bx;
endmodule
module Mux_4_32_CA(
output [:] mux_out,
input [:] data_3, data_2, data_1, data_0,
input [:] select,
input enable
);
wire [:] mux_int;
assign mux_out = enable ? mux_int : 'bz;
assign mux_int = (select==) ? data_0:
(select==) ? data_1:
(select==) ? data_2:
(select==) ? data_3: 'bx;
endmodule
编码器
//case 优先编码器
module priority_case(
output reg [:] Code,
output valid_data,
input [:] Data
);
assign valid_data = |Data; //“reduction or" operator
always @(Data)
casex (Data)
'b1xxxxxxx : Code = 7;
'b01xxxxxx : Code = 6;
'b001xxxxx : Code = 5;
'b0001xxxx : Code = 4;
'b00001xxx : Code = 3;
'b000001xx : Code = 2;
'b0000001x : Code = 1;
'b00000001 : Code = 0;
default : Code = 'bx;
endcase
endmodul
verilog 常见单元描述的更多相关文章
- Quartus II 中 Verilog 常见警告/错误汇总
Verilog 常见错误汇总 1.Found clock-sensitive change during active clock edge at time <time> on regis ...
- No.2 Verilog 模块和描述风格
2-1 模块 Verilog语言基本的描述单元----模块,模块是用来描述某个设计的功能或结构,以及它与其它外部模块进行通信的端口. module module_name(port_list); De ...
- verilog常见错误列表
Error/Warning 来源:https://hdlbits.01xz.net/wiki/ 题目: 1.Quartus Warning 10235: Warning (): Verilog HDL ...
- spring中常见注解描述
@Qualifier如果一个接口类有多个实现类,那么可以用@Qualifier指定使用哪个实现类: /** * 定时器,用于处理超时的挂起请求,也用于连接断开时的重连. */ @Autowired @ ...
- Verilog HDL的程序结构及其描述
这篇博文是写给要入门Verilog HDL及其初学者的,也算是我对Verilog HDL学习的一个总结,主要是Verilog HDL的程序结构及其描述,如果有错,欢迎评论指出. 一.Verilog ...
- Verilog的数据流、行为、结构化与RTL级描述
Verilog语言可以有多种方式来描述硬件,同时,使用这些描述方式,又可以在多个抽象层次上设计硬件,这是Verilog语言的重要特征. 在Verilog语言中,有以下3种最基本的描述方式: 数据流描述 ...
- 对Verilog 初学者比较有用的整理(转自它处)
*作者: Ian11122840 时间: 2010-9-27 09:04 ...
- python描述符理解
Python中的描述符是一个相对底层的概念 descriptor Any object which defines the methods get(), set(), or delete(). Whe ...
- Verilog HDL模型的不同抽象级别
所谓不同的抽象类别,实际上是指同一个物理电路,可以在不同层次上用Verilog语言来描述.如果只从行为功能的角度来描述某一电路模块,就称作行为模块.如果从电路结构的角度来描述该电路模块,就称作结构模块 ...
随机推荐
- 站点部署,IIS配置优化指南[转]
站点部署,IIS配置优化指南 目录 一. 设置应用程序池默认设置 二. 常规设置 三. 优化回收策略 四. 性能 五. IIS初始化(预加载 ...
- 第04组 Alpha冲刺(3/4)
队名:斗地组 组长博客:地址 作业博客:Alpha冲刺(3/4) 各组员情况 林涛(组长) 过去两天完成了哪些任务: 1.收集各个组员的进度 2.写博客 展示GitHub当日代码/文档签入记录: 接下 ...
- Python程序中的进程操作-进程同步(multiprocess.Lock)
目录 一.多进程抢占输出资源 二.使用锁维护执行顺序 三.多进程同时抢购余票 四.使用锁来保证数据安全 通过刚刚的学习,我们千方百计实现了程序的异步,让多个任务可以同时在几个进程中并发处理,他们之间的 ...
- js函数只执行一次,函数重写,变量控制与闭包三种做法
一.情景需求 调用后台接口需要附带token信息,那么在每个请求的头部添加token的做法就不太优雅了:一个网站请求100次,那就得写添加100次token,假设某天接口有所变动,改起来就十分麻烦了. ...
- 使用rsync基于ssh免密登陆进行备份或目录同步
日常工作中有很多的备份工作,rsync是一个很不错的工具,尝试使用基于ssh免密登陆的方式进行备份,测试成功,是可行且方便的方法,撰文记之,以备后用: 1.A主机root用户对B主机root用户做ss ...
- 【Oracle】Oracle常用命令整理(持续更新中)
一些常用的操作命令记录 SQLPlus连接 sqlplus {username}/{password}@{ip}:{port}/{sid} 创建用户 create user testuser iden ...
- 解决最新Java12 安装
题外话: 因为我笔记本上的java用的版本是比较老的,从java8开始已经不再需要classpath java-home path 这几个安装界的行业规范,基本上只需要安装 然后在path路径下 ...
- js 根据url 下载图片 前端js 实现文件下载
1.H5 download属性 function downFile(content, filename) { // 创建隐藏的可下载链接 var eleLink = document.createEl ...
- Nginx超时设定
最近针对公司的goscon网关发了一个PR,新增了握手阶段的超时判定.现在回顾一下Nginx的所有超时判定,看看目前还缺少哪些判定 ngx_http_core_module包含的timeout: cl ...
- 给HttpClient添加请求头(HttpClientFactory)
前言 在微服务的大环境下,会出现这个服务调用这个接口,那个接口的情况.假设出了问题,需要排查的时候,我们要怎么关联不同服务之间的调用情况呢?换句话就是说,这个请求的结果不对,看看是那里出了问题. 最简 ...



