比如我想写个打一拍的程序,输入信号为design_in,打一拍后是design_in_ff1。
如果我用verilog写是这样的
always @(posedge clk_sys or negedge rst_n)
begin
if (rst_n == 1'b0)
design_in_ff1 <= 1'b0;
else
design_in_ff1 <= design_in;
end
但是用vhdl写的时候,比如我这样写
d_ff11: process (clk_sys, rst_n) is
begin
if rst_n = '0' then
design_in_ff1 <= '0';
elsif rising_edge(clk) then
design_in_ff1 <= design_in;
endif
end
IF CLR='1' THEN
COUNTER1<=0;
CLK_REG<='0';
ELSIF CLK'EVENT AND CLK='1' THEN
IF COUNTER1=N-1 THEN
COUNTER1<=0;
CLK_REG<=NOT CLK_REG;
ELSIF COUNTER1=(N-1)/2 THEN
COUNTER1<=COUNTER1+1;
CLK_REG<=NOT CLK_REG;
ELSE
COUNTER1<=COUNTER1+1;
END IF;
不用,时钟到来自己会更新的,你只要知道是同步或者异步即可。
END IF;
END PROCESS;