Объркване на Verilog Reg/Wire

Създавам многоцикличен процесор във Verilog, който се състои от Datapath и Control. Изходите на управлението (държавната машина) са регистри, но връзките между пътя на данните са проводници. Ако кабелният сигнал трябва да бъде (в псевдокод): wire = OR(wire coming from a mux, reg output from control), как да направя това? Можете ли ИЛИ проводник с reg във Verilog? Ако не, има ли по-добър начин да се приложи това? Могат ли изходите за управляващ сигнал да бъдат регистри в контролния модул, но проводници в горния модул?

Актуализация със снимка за пояснение: въведете описание на изображението тук


person Austin    schedule 29.11.2015    source източник


Отговори (1)


Да, можете или кабел и reg изход във Verilog.

Да, изходите на всеки подмодул, които по същество са проводници, могат да бъдат пряко или индиректно вътрешно свързани към reg в рамките на подмодула.

Мисля, че това е добър начин да го направите.

Сега можете дори да декларирате изходите на модул като "reg", но това е само семантична захар пред декларирането на изхода и reg отделно. Харесвам изричния начин повече (т.е. q1_o и q1_reg).

module Submod(input clk_i, intput d_i, output q1_o, output reg q2_o);
    reg q1_reg;
    always @(posedge clk_i) begin
        q1_reg <= d_i;
        q2_o <= ~d_i;
    end
    assign q1_o = q1_reg;
endmodule

module Main(input clk_i, input [3:0]ext_i, output [1:0]ext_o)
    wire mux, x1, x2;

    Submod Submod_inst(clk_i, ext_i[0], x1, x2);

    assign ext_o[0] = x1;
    assign mux = ext_i[1] ? ext_i[2] : ext_i[3];

    assign ext_o[1] = mux | x2; /* something like this */
endmodule
person Anders    schedule 29.11.2015
comment
FYI: примерът е условен. Мисля, че синтаксисът е правилен, той е на върха на главата ми и нямам достъп до компилатор на Verilog, за да проверя. Трябва да е достатъчно близо, за да видите какво се случва с това как регулаторите могат да бъдат закачени към кабели. - person Anders; 30.11.2015