问题描述
结合同步和异步复位会占用大量资源。如何最小化资源使用?
解决/修复方法
的Verilog
module new_async_soft_reset(a_in,b_out,async_reset,soft_reset,clock);
输入a_in;
输入async_reset;
输入soft_reset;
输入时钟;
输出b_out;
reg b_out;
reg soft_reset_reg;
wire reset_all;
assign reset_all = soft_reset_reg | async_reset;
总是@(posedge clock或posedge async_reset)
开始
if(async_reset)
soft_reset_reg <= 1’b0;
其他
soft_reset_reg <= soft_reset;
结束
总是@(posedge clock或negedge reset_all)
开始
if(~reset_all)
b_out <= 1’b0;
其他
b_out <= a_in;
结束
endmodule
VHDL
库;
使用ieee.std_logic_1164.all;
实体new_async_soft_reset是
port(a_in,async_reset,soft_reset,clock:in std_logic;
b_out:out std_logic);
最终实体;
new_async_soft_reset的体系结构new_async_soft_reset_arch是
signal soft_reset_reg,reset_all:std_logic;
开始
reset_all <= soft_reset_reg或async_reset;
进程(clock,async_reset)是
开始
如果async_reset =’1’那么
soft_reset_reg <=’0′;
elsif clock’event和clock =’1’然后
soft_reset_reg <= soft_reset;
万一;
结束过程;
进程(clock,reset_all)是
开始
如果reset_all =’0’那么
b_out <=’0′;
elsif clock’event和clock =’1’然后
b_out <= a_in;
万一;
结束过程;
终端架构;
没有回复内容