
———这个应该是位宽定义上有点问题吧(估计led少定义了一位),不过不影响逻辑实现,顶多就是截取了led_out1的低八位作为输出(led=led_out1[7:0])。
led_out1=~led_out这句话什么意思啊?
——当满足buffer == 26'd25000000时,led_out取反。比如,在buffer != 26'd25000000时,led_out=9'b010101010;当buffer == 26'd25000000时,led_out = 9'b101010101.
为什么 led_out没有初始化就在移位?reg型未初始化默认值是什么呢?
——这个扰郑跟一般的单片机程序有所不同。FPGA内部如果没有初始化数值,默认为内三态x,在流水灯上表现为暗(相当于逻辑0),不影响使用。如果楼主不放心,可以再定义时给出初始化数值,比如reg [8:0] led_out = 9'd0.
总体来局纯说这个程序比较简单缓腊颂。希望对楼主有帮助。
建议:时序逻辑内部用非阻塞赋值<=。
moduleled_test
(
//
inputs:
clk,
rst_n,
led
)
上面括号里的都是本模块对外核宴接口信号,如果这个代码作为FPGA程序顶层的话
,那就是连接FPGA外部pin的,那么这几个信渗梁号就要由外部晶振和按键之类的驱动
,仿真的话,则由其testbench来驱动。
FPGA里使用的全局clk和rst信号一般都是直接由片外信号丛氏运驱动,内部可能经过二次处理,但大多都不是直接由内部产生。
只用了verilog,c学的不好。写的是个8位的,写的不好。。。module light(clk,clr,left,data)
input left,clk,clr
output data
reg [7:0]data;
always @ (posedge clk)
if(clr)
begin
data<=0
left<=0
end
else if(left)
begin
data[0]<=~data[7]
data[7:1]<=data[6:0]
end
else
begin
data[7]<=~data[0]
data[6:0]<=data[7:1]
end
endmodule
没仿真宽唯过,大概思路就是这样的,慎衫培希塌数望对你有帮助
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)