verilogHDL有问题的贴出来
大家可以交流一下
为什么有时QuartusII会把状态机的某些状态综合没了,而synplify就不会呢?
我的问题接我那个问题贴放了 ^_^ 麻烦小编大侠您去看看
还有一个问题
例如reg[3:0] a;
这个4位寄存器我用 口口口口来表示(四个口 ^_^),我的问题是哪个是低位,哪个是高位?a[2]是哪个?谢谢回答^_^
我觉得没有高低位之分,一般a[3]是高位。a[2]是a[3]右边那个。
还是有高低位之分吧?
符号是有高低位的含义,但具体使用中,高低位自定。
怎么定?
通过赋值来定阿!
比如说,a[5] <= input;a[4] <= a[5].....a[0] <= a[1];output <= a[0];
习惯上左起为高MSB……LSB LSB即为a[0]
不同的软件综合的结果并非都是一样的 甚至结果都不一样 这要看你的需要 而且s为综合界的执牛耳者,而q并非主要是做综合的 其综合能力还是有点差别的 再加上有可能q的综合会考虑altera公司器件的因素 所以很多原因造成不同的综合结果 而并非只是这样.如果你的功能没有错误,其实都是可以的,不知道这样回答对你有没有用
功能确实没有错误,被quartus综合之后反而错了。一开始我是通过仿真才发现功能错误,少了一个状态。这使我想到看状态机,可是q的工具报告没有发现状态机。于是我只能反复查代码,最后没有办法,换了s的综合器。没想到问题就解决了。我在综合时,两个工具都是选的altera的器件。
这也不无可能,有时候quartus就会出现莫名其妙的错误,他的综合器感觉有点弱.不过你这个情况我还真没有碰到过,它不是没有发现状态机嘛,我估计它把你的状态当作其他给优化掉了.
过几天我把代码给你,你帮我看看,好吧。另外,我用的是Q6.0
好
我看看
这个看你的定义方式
如果 向小编那么定义 就是左边是高位
如果定义reg [0:7] a;
那么右边是高位
嗯 不错~
请问:
我想设计一个"inout"类型的口,程序如下:
module testone(A,check,B,C);
input A;
input check;
output B;
inout C;
reg out_data;
assignC=check?out_data:'BZ;
always @(A)
begin
out_data <= A;
end
assign B=(!check)?C:A;
endmodule
我用QuartusII 编译后,利用波形图仿真,其中A设为高电平,check为时钟,得到的结果:C~result一直表示为"U"行,好象根本没有输出过A的值.
是不是我哪弄错了?向各位请教
第一个是我用activehdl仿真的 
第二个是我用quartus仿真的

应该没错
可能是你的quartus使用方面上有问题
一般口口口口左为高位,a[3]是左边的第一位。如果reg[0:3] a;那a[0]是左边的第一位。
谢谢
我再试试
我还是仿真不出你的结果。我的流程如下:
1.新建项目testone;
2.新建verilog 编辑器,输入代码;
3.点击“start complier”,编译程序;
4.新建波形仿真输入文件,加入输入口"A"和"Check",设定为时钟波形,周期:10ns,占空比: 50%,存储并作为波形仿真的输入文件;
5.进行仿真,结果得不出。
请教
看具体定义了,比如usb协议就规定的是先传送最低位,则a2是从左数第三个,iic规定先传最高位,则a2是左数第2位,这就是所谓LittleEndian和BigEndian编码原则
这位兄弟,Little Endian和Big Endian定义的是字节序,不是比特序!
在芯片内部最好不要使用INOUT类型
inout是设计定义中需要的,有什么好办法可以只用in和out实现inout功能吗
你的inout pin是芯片内部的吗?如果是,那就是定义模块的人的问题了。
!
学习学习。
两个问题:
1.我用的是debussy,看波形的时候为什么不能移动cursor/marker了 ,以前是可以的
2.always @(cnt)
begin
int<= #1 1'b0;
end
cnt是在1ns(timescale是1ns)的时候跳变,为什么int也在1ns的时候变为0?不是2ns(有一个1ns延迟阿)?
谢谢
