verilog学习笔记(3)_task/case小例子及其tb
module ex_case
`timescale lns/1ns
module ex_case(
input wire rst_n,
input wire sclk,
output reg [7:0] o_dv,
output reg [7:0] o_data,
//数据输入
input wire [9:0] i_data,
input wire [7:0] i_addr
);
//
reg [2:0] cnt_7;
//不同功能的寄存器分开always来写,这样代码的可维护性强,可读性强
always@(posedge sclk or negedge rst_n)
if(rst_n == 1'b0)
cnt_7 <= 3'd0;
else
cnt_7 <= cnt_7 + 1'b1;
/*
//时序逻辑
always@(posedge sclk or negedge rst_n)
if(rst_n == 1'b0)
begin
o_data <= 8'd0;
end
else
begin
case(cnt_7)
3'd0:
begin
o_data <= 3'd7;//给寄存器 非阻塞赋值 当cnt_7等于3'd0执行此条语句
o_dv <= 1'b1;
end
3'd1:
begin
o_data <= 3'd0;
o_dv <= 1'b0;
end
3'd2:
begin
0_data <= 3'd5;
o_dv <= 1'b1;
end
default:
begin
o_data <= 3'd0;
o_dv <= 1'b0;
end
endcase
end
*/
//组合逻辑
//消除锁存器
//1.消除敏感列表,case条件,在赋值语句的右边变量
//2.所有条件分支写全
always@(cnt_7)
case(cnt_7)
3'd0:
begin
o_data <= 3'd7;//给寄存器 非阻塞赋值 当cnt_7等于3'd0执行此条语句
o_dv <= 1'b1;
end
3'd1:
begin
o_data <= 3'd0;
o_dv <= 1'b0;
end
3'd2:
begin
o_data <= 3'd5;
o_dv <= 1'b1;
end
default:
begin
o_data <= 3'd0;
o_dv <= 1'b0;
end
endcase
endmodule
module tb_ex_case
`timescale lns/1ns
module tb_ex_case;
reg sclk,rst_n;
wire [7:0] data;
wire dv;
reg [7:0] i_addr;
reg [9:0] i_data;
initial begin
sclk = 0;
rst_n = 0;
#200
rst_n = 1;
end
initial
begin
i_data = 0;
i_addr = 0;
#500
send_data(255);
end
always #10 sclk <= ~sclk;//周期20ns的时钟
ex_case ex_case_inst(
.rst_n (rst_n),
.sclk (sclk),
.o_dv (dv),
.o_data (data),
.i_data (i_data),
.i_addr (i_addr)
);
task send_data(len);//任务的声明
integer len,i;//变量声明区
begin//必须加begin和end
for(i = 0;i <= len;i = i + 1)//循环语句
begin
@(posedge sclk);//上升沿时进行赋值 按照节拍的动作来
i_addr <= i[7:0];//这里阻塞赋值 非阻塞赋值都可以
i_data <= i[7:0];
end
i_addr <= 0;
i_data <= 0;
end
endtask
endmodule
verilog学习笔记(3)_task/case小例子及其tb的更多相关文章
- verilog学习笔记(2)_一个小module及其tb
module-ex_cnt module ex_cnt( input wire sclk, input wire rst_n, output wire[9:0] cnt ); reg [9:0] cn ...
- 【Unity 3D】学习笔记29:游戏的例子——简单的小制作地图
无论学习.只看不练是坏科学. 因此,要总结回想这怎么生产MMROPG小地图的游戏.于MMROPG游戏类,在游戏世界中行走时导致各地,通常在屏幕的右上角,将有一个区域,以显示当前的游戏场景微缩.在游戏世 ...
- verilog学习笔记(1)_两个小module
第一个小module-ex_module module ex_module( input wire sclk,//声明模块的时候input变量一定是wire变量 input wire rst_n,// ...
- Verilog学习笔记简单功能实现(三)...............同步有限状态机
在Verilog中可以采用多种方法来描述有限状态机最常见的方法就是用always和case语句.如下图所示的状态转移图就表示了一个简单的有限状态机: 图中:图表示了一个四状态的状态机,输入为A和Res ...
- Verilog学习笔记
作者:桂. 时间:2017-06-24 11:07:40 链接:http://www.cnblogs.com/xingshansi/p/7039237.html 前言 Verilog是硬件描述语言, ...
- Verilog学习笔记基本语法篇(十一)········ 常用系统函数
1)系统任务:$monitor 格式: $monitor(p1,p2,p3...pn); $monitor; $monitoron; $monitoroff; 任务$monitor提供了监控输出列 ...
- Verilog学习笔记简单功能实现(六)...............计数分频电路
在分频器电路中最重要的概念有两个:1)奇分频/偶分频:2)占空比. A)其中最简单的就是二分频电路,占空比为50%,其Verilog程序为 module half_clk(clr,clk_in,clk ...
- Verilog学习笔记简单功能实现(五)...............序列检测设计
这里采用夏宇闻教授第十五章的序列检测为例来学习; 从以上的状态转换图可以写出状态机的程序: module seqdet(x,out,clk,rst); input x,clk,rst; output ...
- Verilog学习笔记设计和验证篇(三)...............同步有限状态机的指导原则
因为大多数的FPGA内部的触发器数目相当多,又加上独热码状态机(one hot code machine)的译码逻辑最为简单,所以在FPGA实现状态机时,往往采用独热码状态机(即每个状态只有一个寄存器 ...
随机推荐
- Python Web-第五周-Web Services and XML(Using Python to Access Web Data)
1.Web Service Overview 1.Data on the Web Python Dictionary 和 Java HashMap间需要建立一个桥梁,可以用XML或是JSON 2.XM ...
- 洛谷P2387 [NOI2014]魔法森林(LCT,Splay)
在XZY&XZZ巨佬的引领下,一枚蒟蒻终于啃动了这道题...... 这次还是第一次写LCT维护边权,还要化边为点,思路乱七八糟的,写起来也不顺手,还好调了许久终于AC啦. 贪心排序按一个关键字 ...
- hibernate 反向生成 实体类
1,配置数据库连接 步骤. 点击 windows -> open perspective - > myeclipse datebase Exprorer 打开了dateb ...
- 读取MySQL存储二进制的语音、图片(Blob类型)
/** * 下载语音 * Remarks: * @throws Exception */ public void downloadYuyin() throws Exception { ...
- C# Redis实战(三)
三.程序配置 在C# Redis实战(二)中我们安装好了Redis的系统服务,此时Redis服务已经运行. 现在我们需要让我们的程序能正确读取到Redis服务地址等一系列的配置信息,首先,需要在Web ...
- react-native简单demo:实现加载豆瓣电影列表
https://github.com/axel10/react-native-douban' 相关随笔: react-native 开发环境搭建 http://www.cnblogs.com/axel ...
- centos6.8安装cdh5.10.0(离线版)
Centos6.8安装CDH5 相关包的下载地址: Cloudera Manager地址:http://archive.cloudera.com/cm5/cm/5/ CDH安装包地址:http://a ...
- Java 8 中 ConcurrentHashMap工作原理的要点分析
简介: 本文主要介绍Java8中的并发容器ConcurrentHashMap的工作原理,和其它文章不同的是,本文重点分析了对不同线程的各类并发操作如get,put,remove之间是如何同步的,以及这 ...
- 背景新增属性和css渐变及倒影
背景新增属性和css渐变及倒影 一.background新增属性 background-size:指定对象的背景图像的尺寸大小. background:url() 0 0,url() 0 100%;多 ...
- 使用mescroll来实现移动端页面上拉刷新, 下拉加载更多功能
* mescroll请参考官方文档 1. 使用mescroll实现下拉滑动的效果: (仅仅效果, 有的页面不需要刷新数据, 只要你能下拉就行) 代码如下: var mescroll = new MeS ...