0
Verilog를 사용하는 것은 나의 첫 번째 시도입니다. 내가 8 비트 양방향 포트, 데이터 레지스터 및 다음과 같은 방법으로 데이터 방향 레지스터 정의 : 그것은 완벽하게 작동Verilog의 벡터 지정
inout [7:0] pa; // 8-bit bidirectional parallel port
reg [7:0] data_reg;
reg [7:0] data_dir_reg; // 0 --> input; 1 --> output
assign pa [7] = (data_dir_reg [7]) ? data_reg [7] : 1'bZ;
assign pa [6] = (data_dir_reg [6]) ? data_reg [6] : 1'bZ;
assign pa [5] = (data_dir_reg [5]) ? data_reg [5] : 1'bZ;
assign pa [4] = (data_dir_reg [4]) ? data_reg [4] : 1'bZ;
assign pa [3] = (data_dir_reg [3]) ? data_reg [3] : 1'bZ;
assign pa [2] = (data_dir_reg [2]) ? data_reg [2] : 1'bZ;
assign pa [1] = (data_dir_reg [1]) ? data_reg [1] : 1'bZ;
assign pa [0] = (data_dir_reg [0]) ? data_reg [0] : 1'bZ;
그러나 나는 확신을 달성하는 쉬운 방법이 있어야합니다 같은 결과.
나는주기 위해 함께 노력했다 :
integer i;
for (i = 0; i < 8; i = i + 1)
begin
assign pa [i] = (data_dir_reg [i]) ? data_reg [i] : 1'bZ;
end
을뿐만 아니라 한 번에 전체 벡터를 할당 같이
assign pa [7:0] = (data_dir_reg [7:0]) ? data_reg [7:0] : {8{1'bZ}}[7:0];
어떤 결과없이. 도움 주셔서 감사합니다.
루카
대단히 감사합니다. 나는 generate-for 루프에 대해 몰랐다. 그러나 대답과 조금 더 읽은 후에 나는 컴파일 타임과 런타임에서 평가 된 루프 사이의 차이점을 가지고 있다고 생각한다. – Luca