特权同学的异步复位,同步处理方法总结
来源:互联网 发布:dnf辅助端口免费制卡 编辑:程序博客网 时间:2024/05/13 20:45
//不带PLL的异步复位,同步释放:
//其实就是用的打节拍的方式将复位信号控制成clk控制的信号而已!
module reset
(
input clk,
input reset,
output reset_2
);
reg reset_1;
reg reset_2;
always@(posedge clk or negedge reset)
if(!reset)
reset_1<=1'b0;
else
reset_1<=1'b1;
always@(posedge clk or negedge reset)
if(!reset)
reset_2<=1'b0;
else
reset_2<=reset_1;
endmodule
//特权同学写的带有PLL的异步复位,同步释放
//思想:先将FPGA的复位信号做一次异步复位,同步处理,将这个复位信号输入给PLL,
//接着在将PLL的复位信号做一次异步复位,同步处理,得到系统的复位信号
//其实就是用的打节拍的方式处理异步信号的,使其都只受时钟控制的信号!
module sys_reset
(
input clk,
input reset,
output sys_reset,
output clk_25,
output clk_100
);
//第一次异步复位,同步处理
reg reset_1;
reg reset_2;
wire pll_reset;
always@(posedge clk or negedge reset)
if(!reset)
reset_1 <= 1'b0;
else
reset_1 <= 1'b1;
always@(posedge clk or negedge reset)
if(!reset)
reset_2 <= 1'b0;
else
reset_2 <= reset_1;
assign pll_reset = reset_2;
//第二次异步复位,同步处理,将系统用的复位信号输出
wire locked;//PLL输出有效标志位,高电平表示PLL输出有效
wire sys_reset_0;
reg sys_reset_1;
reg sys_reset_2;
assign sys_reset_0 = reset & locked;//用这两个信号来标志复位开始,然后用时钟将其控制成同步信号!
always@(posedge clk_100 or negedge sys_reset_0)
if(!sys_reset_0)
sys_reset_1 <= 1'b0;
else
sys_reset_1 <= 1'b1;
always@(posedge clk_100 or negedge sys_reset_0)
if(!sys_reset_0)
sys_reset_2 <= 1'b0;
else
sys_reset_2 <= sys_reset_1;
assign sys_reset =sys_reset_2;
//这个例化其实应该放在第一次异步复位,同步处理之后,这样看的更清楚
pll u1
(
.inclk0(clk),
.areset(pll_reset),
.c0(clk_25),
.c1(clk_100),
.locked(locked)
);
endmodule
//其实就是用的打节拍的方式将复位信号控制成clk控制的信号而已!
module reset
(
input clk,
input reset,
output reset_2
);
reg reset_1;
reg reset_2;
always@(posedge clk or negedge reset)
if(!reset)
reset_1<=1'b0;
else
reset_1<=1'b1;
always@(posedge clk or negedge reset)
if(!reset)
reset_2<=1'b0;
else
reset_2<=reset_1;
endmodule
//特权同学写的带有PLL的异步复位,同步释放
//思想:先将FPGA的复位信号做一次异步复位,同步处理,将这个复位信号输入给PLL,
//接着在将PLL的复位信号做一次异步复位,同步处理,得到系统的复位信号
//其实就是用的打节拍的方式处理异步信号的,使其都只受时钟控制的信号!
module sys_reset
(
input clk,
input reset,
output sys_reset,
output clk_25,
output clk_100
);
//第一次异步复位,同步处理
reg reset_1;
reg reset_2;
wire pll_reset;
always@(posedge clk or negedge reset)
if(!reset)
reset_1 <= 1'b0;
else
reset_1 <= 1'b1;
always@(posedge clk or negedge reset)
if(!reset)
reset_2 <= 1'b0;
else
reset_2 <= reset_1;
assign pll_reset = reset_2;
//第二次异步复位,同步处理,将系统用的复位信号输出
wire locked;//PLL输出有效标志位,高电平表示PLL输出有效
wire sys_reset_0;
reg sys_reset_1;
reg sys_reset_2;
assign sys_reset_0 = reset & locked;//用这两个信号来标志复位开始,然后用时钟将其控制成同步信号!
always@(posedge clk_100 or negedge sys_reset_0)
if(!sys_reset_0)
sys_reset_1 <= 1'b0;
else
sys_reset_1 <= 1'b1;
always@(posedge clk_100 or negedge sys_reset_0)
if(!sys_reset_0)
sys_reset_2 <= 1'b0;
else
sys_reset_2 <= sys_reset_1;
assign sys_reset =sys_reset_2;
//这个例化其实应该放在第一次异步复位,同步处理之后,这样看的更清楚
pll u1
(
.inclk0(clk),
.areset(pll_reset),
.c0(clk_25),
.c1(clk_100),
.locked(locked)
);
endmodule
阅读全文
0 0
- 特权同学的异步复位,同步处理方法总结
- 同步复位和异步复位的比较
- 同步复位和异步复位的比较
- 异步复位和同步复位的区别
- 同步复位和异步复位的比较
- 同步复位和异步复位的对比
- 同步复位和异步复位的比较
- 同步异步复位的区别
- FPGA中韩彬(大神)的异步复位,同步释放方法
- 异步复位同步释放的方法以及多时钟系统的复位设计
- 异步复位、同步复位和异步复位同步释放的比较
- 同步复位和异步复位
- Verilog同步复位,异步复位
- 同步复位与异步复位
- 异步复位和同步复位
- 同步复位和异步复位的比较(转载)
- 异步复位同步释放---关于复位的问题
- 异步复位同步释放---关于复位的问题
- elasticsearch-java api之文档(document)各种操作
- vue-router 之命名路由
- 查询,修改 数据库
- SourceTree的基本使用
- 基础练习 杨辉三角形
- 特权同学的异步复位,同步处理方法总结
- linux 下获取当前时间精确到微妙
- JAVA多线程的一点知识
- 第六周周总结
- B/S和C/S的区别及应用
- jquery选择器
- OpenCV拷贝与ROI
- 卷积神经网络(Convolutional Neural Network)
- AndroidStudio(3.0.x版本)输入法无提示问题解决方案