IF(clk_1'event AND clk_1='1')THEN--state='10'表示正在加油 IF(state="10")THEN IF(target_money-gas_4<5)THEN money_4<=target_money; gas_4<=target_gas; final_2<='1'; -- assist<='1'; state<="11";--加油完毕,导致state="11" ELSE money_4<=money_4+25; gas_4<=gas_4+5; END IF; END IF; ELSE money_4<=money_4; gas_4<=gas_4; END IF;编译后Error (10821): HDL error at fill_up.vhd(241): can't infer register for "gas_4[9]" because its behavior does not match any supported register model请更改
时间: 2024-02-12 20:03:24 浏览: 72
daima.rar_曼彻斯特_曼彻斯特VHDL_曼彻斯特编码
根据错误提示,gas_4[9]的行为与任何支持的寄存器模型都不匹配,因此编译器无法推断出寄存器。这通常是因为你在进程中同时使用了组合逻辑和时序逻辑。请检查你的代码,确保在进程中只使用一种逻辑类型。如果你需要在进程中使用组合逻辑和时序逻辑,请使用条件语句(例如IF语句)来明确指定每个信号的类型。你可以将gas_4[9]定义为一个中间信号,然后使用条件语句将其连接到时序逻辑或组合逻辑,以解决这个问题。
阅读全文