MyFPGA Forum

 找回密码
 注册
搜索
查看: 1995|回复: 1
打印 上一主题 下一主题

DE2 lab6--part8

[复制链接]
跳转到指定楼层
1#
发表于 2010-7-5 16:12:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
练习要求实现
S=(AXB)+(CXD)
乘法和加法分别用lpm实现,这个很简单,没问题。关键是要求复用,如,SW15-8表示A或C,SW7-0表示B或D。通过SW16来控制,当SW16=1是,为A,B组合,SW=0时,为C,D组合。SW17为寄存器的写入使能,当SW17=1时,A,B或C,D的值写入寄存器。

这样的话,代码如下:

always @(posedge KEY[1] ,negedge KEY[0])
beign
  if(!KEY[0])     //复位
  begin
    Areg<=0; Breg<=0; Creg<=0; Dreg<=0; cout<=0; S<=0;
  end
  else
  begin
     if(SW17)    //寄存器写使能
     begin
        if(SW16) begin      //选择A,B
        Areg<=SW[15:8];  Breg<=SW[7:0];
        end
       else                        //选择C,D
       begin
       Creg<=SW[15:8]; Dreg<=SW[7:0];
       end
     end
    else                              //写使能无效,禁止写入,即保持
     begin
      Areg<=Areg; Breg<=Breg; Creg<=Creg; Dreg<=Dreg;
     end
   end

以上理解不知道有误否?
2#
发表于 2010-7-6 11:21:15 | 只看该作者
这样的意义没有错…
未来会使用真正的 clk , 不会再使用 KEY[1]…
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|MyFPGA

GMT+8, 2024-5-15 18:46 , Processed in 0.052628 second(s), 16 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表