Помогите пожалуйста решить такую задачу.
Имеется 14-битная шина, которая должна защёлкиваться в регистре при любом изменении сигналов на ней. Также при этом должен устанавливаться в 1 выход intr_out. По внешним тактовым импульсам содержимое регистра должно выводиться в виде бит стрима.
Вот моя реализация:
module main(
output reg cdata_out,
input cclk_in,
output reg intr_out
input usb_reg_0,
input usb_reg_1,
input usb_reg_2,
input usb_reg_3,
input usb_reg_4,
input usb_reg_5,
input usb_reg_6,
input usb_led_24,
input usb_led_48,
input usb_led_96,
input usb_led_882,
input usb_led_441,
input usb_led_16,
input usb_led_connect
);
reg [13:0] usb_conf_reg;
wire [13:0] usb_conf;
assign usb_conf[13:0] = {
usb_reg_0,
usb_reg_1,
usb_reg_2,
usb_reg_3,
usb_reg_4,
usb_reg_5,
usb_reg_6,
usb_led_24,
usb_led_48,
usb_led_96,
usb_led_882,
usb_led_441,
usb_led_16,
usb_led_connect
};
always @(posedge cclk_in or usb_conf)
begin
if (cclk_in)
begin
cdata_out = usb_conf_reg[13];
usb_conf_reg = {usb_conf_reg[12:0], 0};
intr_out = 0;
end else
begin
usb_conf_reg = usb_conf;
intr_out = 1;
end
end
endmodule
Компилятор ISE Xilinx ругается на это так:
ERROR:Xst:902 - "main.v" line 185: Unexpected usb_conf event in always block sensitivity list.
Если убрать posedge из секции always, то компиляция проходит. В чём тут дело?