main.v 및 signal.v의 두 모듈이 있습니다.신호를 외부 모듈로 이동하는 중에 오류가 발생했습니다
main.v에는 16 비트 reg tx를 구형파에 해당하는 값으로 업데이트하는 몇 줄의 코드가 있습니다.
reg [1:0] counter;
reg [15:0] tx;
always @(posedge clk) begin
counter = counter + 1;
if (counter[1] == 1) begin
tx[15:0] <= 16'b1010101010101010;
else
tx[15:0] <= 16'b0000000000000000;
end
이 작동합니다. 결국,이 신호를 다른 파일 signal.v으로 옮기고 싶습니다. 왜냐하면 tx에 전달하는 신호가 꾸준히 복잡해지기 때문입니다. 나는 이것을 시도 할 때 오류가 발생했습니다. 처음에는 위 코드를 모두 signal.v 파일로 이동하려고 시도했습니다. 그런 다음 그림과 같이 두 파일 사이에 와이어를 사용했습니다.
module signal(clk, get_tx);
input clk;
output reg get_tx;
reg [1:0] counter;
always @(posedge clk) begin
counter = counter + 1;
if (counter[1] == 1) begin
get_tx[15:0] <= 16'b1010101010101010;
else
get_tx[15:0] <= 16'b0000000000000000;
end
그런 다음 main.v에, 나는 출력 오실로스코프에 표시되는 내용을 바탕으로
wire get_tx;
reg [15:0] tx;
signal my_signal(.clk(clk), .get_tx(get_tx));
always @(get_tx) begin
tx <= get_tx;
end
는,이 방법은 작동하지 않습니다 추가했는데, 그 이유를 확실하지 않다 이것은. 첫 번째 사례는 정상적으로 작동하는 것으로 보이므로 두 번째 사례로 이동할 때 실패 이유를 알 수 없습니다 (신호가 완전히 다르게 보입니다). 도움/조언을 부탁드립니다.
출력은 Verilog의 레지스터가 될 수 있습니다. – Laleh
네, 맞습니다. 진술을 삭제했습니다. – Roman
그게 작동합니다 - 고마워요! –