verilog代码求助,太菜鸟,自己搞很久不懂

- module top(
- input [7:0] datain,
- output [15:0] dataout
- );
- wire [3:0]A1, [3:0]B1, [3:0]R1, [3:0]S1, [3:0]R11, [3:0]R12,[3:0]S11;
- alpha5 (R11[3:0], A1[3:0]);
- alpha11 (R12[3:0], B1[3:0]);
- alpha10 (S11[3:0], A1[3:0]);
- alpha14 (S12[3:0], B1[3:0]);
- xor (R1[3:0], R11[3:0], R12[3:0]);
- xor (S1[3:0], S11[3:0], S12[3:0]);
- assign datain[7:0]={A1[3:0],B1[7:4]};
- assign dataout[15:0]={A1[3:0],B1[7:4],R1[11:8],S1[15:12]};
- endmodule
对verilog和vivado都是在太不熟悉
模块alpha和xor的端口顺序要对应。
12.assign datain[7:0]={A1[3:0],B1[3:0]};
13.assign dataout[15:0]={A1[3:0],B1[3:0],R1[3:0],S1[3:0]};
楼上说的对
小编你的 B1 R1 和 S1 声明的位宽是 4-bit ,bit索引是[3:0],但是你使用它们时的索引已经超出了你的声明范围,你使用时应该是
B1[3:0] R1[3:0] S1[3:0]
不过小编你还是把EDA工具提供的错误信息贴出来比较好
datain是输入信号,是不能给赋值的
assign datain = ....; 这里是有问题的
说对了,按楼上改了syntax error是没有了,但综合的时候出错,datain这里的确有问题,请问这里input将8bits数据分成两个4bits数据怎么改?[Synth 8-3352] multi-driven net b14[0] with 2nd driver pin 'GND' ["E:/vivado_project/RS/RS.srcs/sources_1/new/alpha11.v":27]
[Synth 8-3352] multi-driven net b14[0] with 1st driver pin 'i_1/i_3/O' ["E:/vivado_project/RS/RS.srcs/sources_1/new/alpha11.v":27]
[Synth 8-5559] multi-driven net b14[0] is connected to constant driver, other driver is ignored ["E:/vivado_project/RS/RS.srcs/sources_1/new/alpha11.v":27]
[Synth 8-4485] pin datain[7] is connected to multiply driven net where other driver is constant
[Common 17-69] Command failed: Vivado Synthesis failed
前三个warning,后两个是error
datain[7:0]分成两个4bit信号可以直接用datain[7:4]和datain[3:0].错误信息说的是datain的第7bit(datain[7])有多个驱动,意思是有多个信号都接到这一bit上了,是有问题的。
