Създавам многоцикличен процесор във Verilog, който се състои от Datapath и Control. Изходите на управлението (държавната машина) са регистри, но връзките между пътя на данните са проводници. Ако кабелният сигнал трябва да бъде (в псевдокод): wire = OR(wire coming from a mux, reg output from control)
, как да направя това? Можете ли ИЛИ проводник с reg във Verilog? Ако не, има ли по-добър начин да се приложи това? Могат ли изходите за управляващ сигнал да бъдат регистри в контролния модул, но проводници в горния модул?
Объркване на Verilog Reg/Wire
Отговори (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
FYI: примерът е условен. Мисля, че синтаксисът е правилен, той е на върха на главата ми и нямам достъп до компилатор на Verilog, за да проверя. Трябва да е достатъчно близо, за да видите какво се случва с това как регулаторите могат да бъдат закачени към кабели.
- person Anders; 30.11.2015