fpga动态数码管扫描问题

本人初学,弱弱的问一句这个代码中的d也就是32位输入要显示的数据,为什么这么设置,感觉和单片机不大一样,但是看了很多代码似乎不那么写又运行不出来效果,求解。modules... 本人初学,弱弱的问一句这个代码中的d也就是32位输入要显示的数据,为什么这么设置,感觉和单片机不大一样,但是看了很多代码似乎不那么写又运行不出来效果,求解。
module scan_led(clk_1k,d,dig,seg); //模块名scan_led
input clk_1k; //输入时钟
input[31:0] d; //输入要显示的数据
output[7:0] dig; //数码管选择输出引脚
output[7:0] seg; //数码管段输出引脚

reg[7:0] seg_r; //定义数码管输出寄存器
reg[7:0] dig_r; //定义数码管选择输出寄存器
reg[3:0] disp_dat; //定义显示数据寄存器
reg[2:0]count; //定义计数寄存器

assign dig = dig_r; //输出数码管选择
assign seg = seg_r; //输出数码管译码结果

always @(posedge clk_1k) //定义上升沿触发进程
begin
count <= count + 1'd1;
end

always @(posedge clk_1k)
begin
case(count) //选择扫描显示数据
3'd0:disp_dat = d[31:28]; //第一个数码管
3'd1:disp_dat = d[27:24]; //第二个数码管
3'd2:disp_dat = d[23:20]; //第三个数码管
3'd3:disp_dat = d[19:16]; //第四个数码管
3'd4:disp_dat = d[15:12]; //第五个数码管
3'd5:disp_dat = d[11:8]; //第六个数码管
3'd6:disp_dat = d[7:4]; //第七个数码管
3'd7:disp_dat = d[3:0]; //第八个数码管
展开
 我来答
帐号已注销
2013-09-23 · 超过22用户采纳过TA的回答
知道答主
回答量:103
采纳率:0%
帮助的人:57万
展开全部
一个数码管可以显示0-F,共16种输出,在不考虑小数点的情况下需要4位驱动,因此case语句中把每四位分配给相应要驱动的数码管,32位的输入是为了方便一次性输入,和分成8个4位输入是完全一样的,在实际电路上是没有区别的,有兴趣你可以自己改写一下,对照RTL视图就明白了
正六边形
2013-09-18 · TA获得超过479个赞
知道答主
回答量:49
采纳率:0%
帮助的人:29.6万
展开全部
你这代码显示不全啊,我猜下面的代码应该是把disp_dat经过译码(变成数码管显示用的0~9)赋值给dig_r或dig。然后根据count =1~7译码对应seg = 8‘b00000001到8’b10000000;整段代码的意思应该很简单前面定义端口信号,接下来定义中间变量,然后把d的不同位值分时赋值给disp_dat,然后disp_dat译码输出。count的作用应该是处理决定d的哪4位进行译码,还决定了译码后输出到哪个数码管。和单片机不用是以为fpga是并行语言(虽然这里主要还是顺序执行,分时译码输出)。不知道你是哪里没看懂。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-09-17
展开全部
我轻轻飘过,不带走一片云彩!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式