DW8051 up_dn_ctr.v
来源:互联网 发布:西门子840d软件 编辑:程序博客网 时间:2024/05/21 12:39
module DW8051_updn_ctr (data,
up_dn,
load,
cen,
clk,
reset,
count,
tercnt
);
parameter width = 16;
input [(width-1):0] data;
input up_dn;
input load;
input cen;
input clk;
input reset;
output [(width-1):0] count;
output tercnt;
//------------------------------------------------------------------------------
wire [(width-1):0] count;
wire tercnt;
wire [(width-1):0] max_count;
//---------------
// local signals:
//---------------
reg [(width-1):0] ctr_state;
wire [(width-1):0] next_state;
//------------------------------------------------------------------------------
assign max_count = ( 1 << width) - 1;
assign next_state = (load == 0) ? data :
((cen == 0) ? ctr_state :
((up_dn == 1) ? (ctr_state + 1) : (ctr_state - 1)));
always @(posedge clk or negedge reset)
if (!reset)
ctr_state <= 0;
else
ctr_state <= next_state;
assign count = ctr_state;
assign tercnt = ((up_dn == 1 && ctr_state == max_count) ||
up_dn,
load,
cen,
clk,
reset,
count,
tercnt
);
parameter width = 16;
input [(width-1):0] data;
input up_dn;
input load;
input cen;
input clk;
input reset;
output [(width-1):0] count;
output tercnt;
//------------------------------------------------------------------------------
wire [(width-1):0] count;
wire tercnt;
wire [(width-1):0] max_count;
//---------------
// local signals:
//---------------
reg [(width-1):0] ctr_state;
wire [(width-1):0] next_state;
//------------------------------------------------------------------------------
assign max_count = ( 1 << width) - 1;
assign next_state = (load == 0) ? data :
((cen == 0) ? ctr_state :
((up_dn == 1) ? (ctr_state + 1) : (ctr_state - 1)));
always @(posedge clk or negedge reset)
if (!reset)
ctr_state <= 0;
else
ctr_state <= next_state;
assign count = ctr_state;
assign tercnt = ((up_dn == 1 && ctr_state == max_count) ||
(up_dn == 0 && ctr_state == 0)) ? 1 : 0;
endmodule
加/减计数器功能描述:
1、当复位信号有效时(reset == 0),计数值ctr_state被清零;
2、当加载信号有效时(load == 0),将输入数据data赋给计数值的下一个状态next_state;
3、否则当片选使能信号无效时(cen == 0),计数值的下一个状态保持不变;
4、否则当加/减信号为1时(up_dn == 1),计数值的下一个状态将会加1;
5、否则计数值的下一个状态将会减1;
总结:复位信号将计数值清零;当load信号有效时,计数值的下一个状态为输入的data;当cen无效时,计数值的下一个状态保持不变;
当加减信号为加时,计数值的下一个状态加1; 当加减信号为减时,计数值的下一个状态减1。
0 0
- DW8051 up_dn_ctr.v
- DW8051 shftreg.v
- dw8051基本测试示例
- V
- v
- v
- v
- v
- v
- V
- V
- V
- V
- V
- V
- v
- V
- V
- 如何在虚拟机中为RED HAT配置本地yum源
- [Wikioi 1041][NOIP 2001提高组]Car的旅行路线(疑难题)
- 线索二叉树的理解
- 三级级联查询省份名称和编码(保证名称不重复)的SQL语句
- 泛型应用之一
- DW8051 up_dn_ctr.v
- 解决linux(Ubuntu)下Pydev无法安装的问题
- python paramiko模块的安装使用
- import maven项目错误
- DAVINCI DM3730开发攻略——序
- 形参 里的const和类成员函数形参外后跟着的const
- MySQL存储过程详解 mysql 存储过程
- PostgreSQL连接Python
- Chromium on Android: 解读ContentShell的AndroidManifest文件