有关FPGA的问题
答案:1 悬赏:20 手机版
解决时间 2021-01-22 23:43
- 提问者网友:轻浮
- 2021-01-21 23:51
有关FPGA的问题
最佳答案
- 五星知识达人网友:街头电车
- 2021-01-22 00:50
先就你的报错告诉你如何修改吧,你看你的报错都是multiple drivers xxxx,仔细一看你的Led变量和counter变量被多重驱动了,这是因为你的两个always块里都对led和counter进行了赋值。你把复位操作的那个always和下面的那个always块合并,写到一个always块就好了。
always@(posedge clk or negedge rst_n)
begin
if(!rst_n)
led <= 8'd0;
counter <= 26'd0;
else
begin
if(k1)
.........
end
end追问那你认为我写的这个程序可以实现那个实验要求吗?我刚学FPGA,还望多多指教追答你可以简单的写,刚初学可以不用状态机写法,就用if-else就好了,if(k1) else if(k2) else if(k3),这样写简洁明了。
假设给1你的灯亮,第一种花式就是对led赋常值,第二种花式用移位寄存器实现,移位控制字是00000001,把低位1每次按位左移到最高位后再按位右移,第三种花式控制字是把10101010和01010101互换翻转。追问状态机是什么???追答之前看错了,原来你的state1,state2,state3是一些常数值,不是状态机的状态值,你那几个state值可以写成parameter state1= xx,state2 = xx, state3 = xx;
initial这种写法是仿真激励里用的,这种在RTL里好像Quartus是不可综合的,ISE是可以的。追问state1,state2,state3,不是常数值,我只是给那个状态赋初始值,后面state1,state2,state3是不断变化的。。我按照你说的把它们定义成parameter,编译就报错了。。。。。。。如果不用initial来初始化,那应该怎么写初始化????
追答楼主需要再好好学习下verilog的语法,state1、state2、state3都是常量了,常量不可以被赋值,你应该用寄存器赋值。
always@(posedge clk or negedge rst_n)
begin
if(!rst_n)
led <= 8'd0;
counter <= 26'd0;
else
begin
if(k1)
.........
end
end追问那你认为我写的这个程序可以实现那个实验要求吗?我刚学FPGA,还望多多指教追答你可以简单的写,刚初学可以不用状态机写法,就用if-else就好了,if(k1) else if(k2) else if(k3),这样写简洁明了。
假设给1你的灯亮,第一种花式就是对led赋常值,第二种花式用移位寄存器实现,移位控制字是00000001,把低位1每次按位左移到最高位后再按位右移,第三种花式控制字是把10101010和01010101互换翻转。追问状态机是什么???追答之前看错了,原来你的state1,state2,state3是一些常数值,不是状态机的状态值,你那几个state值可以写成parameter state1= xx,state2 = xx, state3 = xx;
initial这种写法是仿真激励里用的,这种在RTL里好像Quartus是不可综合的,ISE是可以的。追问state1,state2,state3,不是常数值,我只是给那个状态赋初始值,后面state1,state2,state3是不断变化的。。我按照你说的把它们定义成parameter,编译就报错了。。。。。。。如果不用initial来初始化,那应该怎么写初始化????
追答楼主需要再好好学习下verilog的语法,state1、state2、state3都是常量了,常量不可以被赋值,你应该用寄存器赋值。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯