半加器:

//行为级建模
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 常见单元描述的更多相关文章

  1. Quartus II 中 Verilog 常见警告/错误汇总

    Verilog 常见错误汇总 1.Found clock-sensitive change during active clock edge at time <time> on regis ...

  2. No.2 Verilog 模块和描述风格

    2-1 模块 Verilog语言基本的描述单元----模块,模块是用来描述某个设计的功能或结构,以及它与其它外部模块进行通信的端口. module module_name(port_list); De ...

  3. verilog常见错误列表

    Error/Warning 来源:https://hdlbits.01xz.net/wiki/ 题目: 1.Quartus Warning 10235: Warning (): Verilog HDL ...

  4. spring中常见注解描述

    @Qualifier如果一个接口类有多个实现类,那么可以用@Qualifier指定使用哪个实现类: /** * 定时器,用于处理超时的挂起请求,也用于连接断开时的重连. */ @Autowired @ ...

  5. Verilog HDL的程序结构及其描述

    这篇博文是写给要入门Verilog HDL及其初学者的,也算是我对Verilog  HDL学习的一个总结,主要是Verilog HDL的程序结构及其描述,如果有错,欢迎评论指出. 一.Verilog ...

  6. Verilog的数据流、行为、结构化与RTL级描述

    Verilog语言可以有多种方式来描述硬件,同时,使用这些描述方式,又可以在多个抽象层次上设计硬件,这是Verilog语言的重要特征. 在Verilog语言中,有以下3种最基本的描述方式: 数据流描述 ...

  7. 对Verilog 初学者比较有用的整理(转自它处)

    *作者: Ian11122840    时间: 2010-9-27 09:04                                                              ...

  8. python描述符理解

    Python中的描述符是一个相对底层的概念 descriptor Any object which defines the methods get(), set(), or delete(). Whe ...

  9. Verilog HDL模型的不同抽象级别

    所谓不同的抽象类别,实际上是指同一个物理电路,可以在不同层次上用Verilog语言来描述.如果只从行为功能的角度来描述某一电路模块,就称作行为模块.如果从电路结构的角度来描述该电路模块,就称作结构模块 ...

随机推荐

  1. @ConfigurationProperties(pref="")加载局部配置文件

    刚开始@ConfigurationProperties(文件名)直接在参数里加文件名,其实是配置前缀pref="前缀".加载局部配置文件是@PropertySource(value ...

  2. 8.jenkins 远程管理

    远程原理 在我们之前的操作中,是直接将指令写在jenkins 里面的 .因为是做实验.所以指令比较简单. 如果是正式环境的话,可能指令就比较多了. 我们可以将他写成脚本. 我们可以再 jenkins的 ...

  3. 央行辟谣未发行“DC/EP”和“DCEP” 法定数字货币仍在测试阶段

    http://www.sohu.com/a/354709423_100157595 近期,中国央行再度就法定数字货币发布公告,指出目前系统仍处于研究测试过程中,市场上交易“DC/EP”或“DCEP”均 ...

  4. 创建windows服务方法

    将exe程序创建windows服务 sc create TestService binpath= "c:/in estapp.exe" displayname= "Tes ...

  5. Paper | Adaptive Computation Time for Recurrent Neural Networks

    目录 1. 网络资源 2. 简介 3. 自适应运算时间 3.1 有限运算时间 3.2 误差梯度 1. 网络资源 这篇文章的写作太随意了,读起来不是很好懂(掺杂了过多的技术细节).因此有作者介绍会更好. ...

  6. JS模仿腾讯图片新闻

    仿照腾讯图片新闻的幻灯,功能并不完全一样.最开始打算做这个的时候,突然觉得好像做不来.想想如果一步一步,一个功能一个功能的做应该能搞定. 我做这个例子的思路是这样的: 先把需要的html和css代码写 ...

  7. html公用头部和尾部

    这个方式比较简单,样式和js也有效果,还有object和iframe方式 效果图,可以看出公共的样式对于引入的文件也有效果,在加载完文件后js也是有效果的 index.html header.html ...

  8. EventBus 使用/架构/源码分析

    EventBus是针对Android优化的发布-订阅事件总线,简化了Android组件间的通信.EventBus以其简单易懂.优雅.开销小等优点而备受欢迎. github 地址:https://git ...

  9. ansible命令参数介绍

    -m:要执行的模块,默认为command -a:模块的参数 -u:ssh连接的用户名,默认用root,ansible.cfg中可以配置 -k:提示输入ssh登录密码.当使用密码验证的时候用 -s:su ...

  10. MySQL 示例数据库

    微软 SQL Server 自带了一些示例数据库,可用于练习和测试.也可作为自己数据库设计时的参考.这些示例数据库开源在了 GitHub,可在 Microsoft/sql-server-samples ...