看看俺的这个程序,有错误编译不过去
outputDO[63:0];
input 64KHZ,RXDATA;
inout shifter[63:0];
regshifter[63:0];
always @ (posedge 64KHZ)
begin
integer i;
shifter[0] <= RXDATA;
for (i=1;i<=63;i=i+1);
shifter <= shifter[i-1];
DO <= shifter;
end
endmodule
看看俺的这个程序,有错误编译不过去[verilog]
[这个贴子最后由atuhappy在 2004/10/11 11:40am 第 1 次编辑]
module shifter64 (DO,64KHZ,RXDATA);
outputDO[63:0];
input 64KHZ,RXDATA;
regDO[63:0];
always @ (posedge 64KHZ)
DO <= {DO[62:0], RXDATA};
endmodule
好好看看书吧
这样的例子书上很多
看看俺的这个程序,有错误编译不过去[verilog]
谢谢
看看俺的这个程序,有错误编译不过去[verilog]
module shiffterpre(DO,CLK,RXDATA);
input CLK,RXDATA[2..0];
output DO;
inout SHIFTER;
reg [2..0] SHIFTER[11..0];
always @(posedge CLK)
begin
SHIFTER[0]=RXDATA;
SHITER[1] <= SHIFTER[0];
SHITER[2] <= SHIFTER[1];
SHITER[3] <= SHIFTER[2];
SHITER[4] <= SHIFTER[3];
SHITER[5] <= SHIFTER[4];
SHITER[6] <= SHIFTER[5];
SHITER[7] <= SHIFTER[6];
SHITER[8] <= SHIFTER[7];
SHITER[9] <= SHIFTER[8];
SHITER[10] <= SHIFTER[9];
SHITER[11] <= SHIFTER[10];
DO <= SHIFTER[11];
end
endmodule
这个呢?也给指点指点。
看看俺的这个程序,有错误编译不过去[verilog]
你的shifter不该定义为inout
看看俺的这个程序,有错误编译不过去[verilog]
我错了,inout是输入输出口,我没看明白。
看看俺的这个程序,有错误编译不过去[verilog]
谢谢,
module shiffterpre(DO,CLK,RXDATA);
input CLK,RXDATA[2..0];
output DO;
reg [2..0] SHIFTER[11..0];
always @(posedge CLK)
begin
SHIFTER[0]=RXDATA;
SHITER[1] <= SHIFTER[0];
SHITER[2] <= SHIFTER[1];
SHITER[3] <= SHIFTER[2];
SHITER[4] <= SHIFTER[3];
SHITER[5] <= SHIFTER[4];
SHITER[6] <= SHIFTER[5];
SHITER[7] <= SHIFTER[6];
SHITER[8] <= SHIFTER[7];
SHITER[9] <= SHIFTER[8];
SHITER[10] <= SHIFTER[9];
SHITER[11] <= SHIFTER[10];
DO <= SHIFTER[11];
end
endmodule
这样还有问题马?
看看俺的这个程序,有错误编译不过去[verilog]
reg [2:0] SHIFTER[11:0];
现在综合器好像已经能综合这样的表述了,也许可以,不过空间似乎大了点reg [2:0] SHIFTER[3:0]应该就可以了;
看看俺的这个程序,有错误编译不过去[verilog]
SHIFTER[11:0];
SHIFTER[3:0]
在功能上有什么区别?
看看俺的这个程序,有错误编译不过去[verilog]
RXDATA[2..0];
这个好像是vhdl吧!
RXDATA[2;0];
SHIFTER[11:0];
SHIFTER[3:0当然有区别了,一个是4位宽度,、一个是12位宽度。
reg[11:0] shifter
是12位宽度。
reg shifter[11:0]
是12个1位的寄存器。
对不对?
看看俺的这个程序,有错误编译不过去[verilog]
对,那个语句是错了。
应该RXDATA[2;0】
看看俺的这个程序,有错误编译不过去[verilog]
[a:b]在前面的时候是可以分开选取的,在后面的时候只能作为一个整体来选取。俺就是这样理解的。
看看俺的这个程序,有错误编译不过去[verilog]
for 语句可不能综合啊
看看俺的这个程序,有错误编译不过去[verilog]
小编的 shifter[11:0] 应该是对的,我记错了,sorry。
另外,for语句在边界确定的情况下是可以综合的。
看看俺的这个程序,有错误编译不过去[verilog]
这个是错误的,正确的应该是:
moduleshifter64(DO, p_64KHZ, RXDATA);
output[63:0] DO;
inputp_64KHZ, RXDATA;
reg [63:0] DO;
always @(posedge p_64KHZ)
DO <= {DO, RXDATA};
endmodule
看看俺的这个程序,有错误编译不过去[verilog]
表示符不能数字打头;
看看俺的这个程序,有错误编译不过去[verilog]
DO <= {DO, RXDATA};
DO <= {DO[63:1], RXDATA};
有什么区别?
另外,SHIFTER[11:0];
SHIFTER[3:0]
表示寄存器的多少,多少有什么区别?
看看俺的这个程序,有错误编译不过去[verilog]
moduleshifter64(DO, p_64KHZ, RXDATA);
output[63:0] DO;
inputp_64KHZ, RXDATA;
reg [63:0] DO;
always @(posedge p_64KHZ)
DO <= {DO, RXDATA};
endmodule
错误提示:Unpacked port[DO]is not yet suported.
编译不过去
看看俺的这个程序,有错误编译不过去[verilog]
DO <= {DO, RXDATA};{DO, RXDATA}的结果是65位
DO <= {DO[63:1], RXDATA}; 俺写错了,应该是{DO[62:0], RXDATA};
有什么区别?
另外,SHIFTER[11:0];12个
SHIFTER[3:0]4个
表示寄存器的多少,多少有什么区别?
moduleshifter64(DO, p_64KHZ, RXDATA);
output[63:0] DO;
inputp_64KHZ, RXDATA;
reg [63:0] DO;
always @(posedge p_64KHZ)
DO <= {DO[62:0], RXDATA};
endmodule
这个还是编译不过去,错误提示:Unpacked port[DO]is not yet suported.
数据通过4个寄存器和通过12个寄存器有什么区别?
看看俺的这个程序,有错误编译不过去[verilog]
我这里可以通过
除了寄存器数目不同,没什么区别,12个占用资源多
看看俺的这个程序,有错误编译不过去[verilog]
我用的是MODELSIM SE PLUS 5.8b
和工具有关系吗?
看看俺的这个程序,有错误编译不过去[verilog]
ok了