自己编了一个并转串的verilog程序,但是modelsim仿真出来总是不对,求大神指导 5

自己编了一个并转串的verilog程序,但是modelsim仿真出来总是不对,并码的第一个bit总是不能出来,求大神指导~程序:modulep_to_s(p7,clk12... 自己编了一个并转串的verilog程序,但是modelsim仿真出来总是不对,并码的第一个bit总是不能出来,求大神指导~
程序:
module p_to_s(p7, clk12, bits0000);
input [6:0]p7;
input clk12;
output bits0000;
reg bits0000;
reg [6:0]data;
integer i=6;
always @ (posedge clk12)
begin
if(i==6)
begin
data[6:0]<=p7[6:0];
i=0;
bits0000<=data[6];
end
else
begin
i=i+1;
bits0000<=data[6-i];
end
end
endmodule
展开
 我来答
跳拉丁舞的小猫64
2012-05-10 · TA获得超过233个赞
知道答主
回答量:46
采纳率:0%
帮助的人:58.2万
展开全部
把 integer i; 改成 reg[2:0] counter;
然后把你代码里的 i = i + 1 这句去掉,你这是纯粹的软件写法,如果在这里就成了阻塞赋值
和非阻塞赋值混用了,在春哗综合器里根本没法综合,纯粹是错误的写法, 不要听下面人说的
bits0000<=data[6-i]; 这是正确的写法,在时序电路里的always块都用这种写法。
去掉i= i + 1这句阻塞赋值语句后,在任意位置写一段always块:
always@(posedge clk12)begin
if (counter < 3'd6)
counter <= counter + 1'b1;
else
counter <= 3'b0;end
这祥森信一段谨轮实现自加功能
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
风雷小草
2012-04-27 · TA获得超过1711个赞
知道小有建树答主
回答量:1174
采纳率:0%
帮助的人:667万
展开全部
你的代码就写得不对
“bits0000<=data[6-i];”这团芦是软件的风格,不适用于闹或链硬件描述语言。液孙
追问
那我应该怎么改呢?还是就直接重新写?
追答
并转串需要协议,不知道你是按什么协议转的,所以也无法判断你的对错。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ppc68
2012-04-28 · TA获得超过581个赞
知道小有建树答主
回答量:1257
采纳率:100%
帮助的人:773万
展开全部
只用于仿真应该是可以的,不过i应该定义成变量吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式