_makc 0 25 октября, 2020 Опубликовано 25 октября, 2020 (изменено) · Жалоба мне нужно сделать входную часть нарастающим фронтом, последовательным кодом старшими разрядам вперёд и с асинхронным сбросом и выдачу убывающим фронтом, параллельным кодом. есть код. Что в нём изменить? язык system verilog выдача module OutPart(input logic [4:0] countCommands, regN4, input logic [2:0] regOP1, regOP2, input logic C_int, read, reset, input logic [1:0] regOC, output logic C_out, D); logic [3:0] state; always_ff @(posedge C_int, posedge reset) begin if (reset) begin D <= 0; state <= 0; C_out <= 1; end else begin case(state) 0: begin D <= 0; C_out <= 1; if (~read) state <= 1; end 1: begin state <= 2; case (regOC) 0: D <= countCommands[0]; 1: D <= regN4[0]; 2: D <= regOP1[0]; 3: D <= regOP2[0]; endcase end 3: begin case (regOC) 0: D <= countCommands[1]; 1: D <= regN4[1]; 2: D <= regOP1[1]; 3: D <= regOP2[1]; endcase state <= 4; C_out <= 1; end 5: begin case (regOC) 0: D <= countCommands[2]; 1: D <= regN4[2]; 2: D <= regOP1[2]; 3: D <= regOP2[2]; default: state <= 0; endcase state <= 6; C_out <= 1; end 6: begin C_out <= 0; if (regOC[1]) state <= 0; else state <= 7; end 7: begin if (regOC[0]) D <= regN4[3]; else D <= countCommands[3]; state <= 8; C_out <= 1; end 9: begin if (regOC[0]) D <= regN4[4]; else D <= countCommands[4]; state <= 10; C_out <= 1; end 10: begin C_out <= 0; state <= 0; end default: begin state <= state + 1; C_out <= 0; end endcase end end endmodule приём module InPart(input logic C_ext, reset, input logic [1:0] OC, input logic [5:0] In, output logic [5:0] regIn, output logic [4:0] countCommands, output logic [1:0] regOC); always_ff @(posedge C_ext, posedge reset) if (reset) begin countCommands <= 0; regOC <= 0; regIn <= 0; end else begin countCommands <= countCommands + 1; regOC <= OC; regIn <= In; end endmodule Изменено 25 октября, 2020 пользователем _makc Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться