【FPGA每周一练】FPGA的HDL建模第二周

2019-07-16 00:20发布

FPGA每周一练】FPGA的HDL建模第二周
今天迎来了我们的FPGA每周一练第二周
首先回答上周一位坛友@sunedi561的提:全加器有什么典型应用?
简单来说全加器除了可以用作二进制数的加法运算外,还可以应用在其它方向。例如:二进制的减法、乘法运算、BCD码的加法、减法、码组变换、数码比较,以及其它组合电路的设计等方面。
话入正题:
感谢大家的热情参与,感谢大家的积极回复。对于上周问题
1.用Verilog实现设计一个全加
2.四选一的多路选择器。
我看见对选择器是设计基本一样,使用的是CASE语句,用CASE语句可以实现无优先级的选择。当然在新版Verilog综合器中使用IF时只要条件变量各不相同,且相斥,也是可以综合出无优先级的。那我还是在写一遍:

  1. module MUX( C,D,E,F,S,out);
  2.         input                         C,D,E,F ;         //input
  3.         input         [1:0]         S ;                 //select control
  4.         output         reg         out ;                 //result

  5. //___________________cut_______________________//
  6. always@(C or D or E or F or S)
  7.         begin
  8.                 case (S)
  9.                         2'b00 : Mux_out = C ;
  10.                         2'b01 : Mux_out = D ;
  11.                         2'b10 : Mux_out = E ;
  12.                         default : Mux_out = F ;
  13.                 endcase
  14.         end
  15. endmodule

复制代码但是在全加器上问题还是挺多的,不过不是严重问题。首先问题是我在写问题的时候写错一个字,我想写的是设计“一位全加器”但是写成了“一个全加器”。好在大家都理解了题目意思。
很多人会把写Verilog代码想象成写C类程序。事实上这种想法是不对的,因为Verilog是硬件描述语言。何为硬件描述语言?就是描述电路的,描述功能,实现功能。只要功能实现了,代码就要像看女生的超短裙一样,越短越好。
但是你写的代码不单纯是给计算机读的,如果如果单纯的给计算机读,那好啦,写0101010101....计算机岂不是很开心。代码最主要就是给人读的,给人读的就要注意什么?可读性!!(这个是个很重要的问题,这个课程结束后,可能会讲RTL编码规范,到时候细讲。)那我们此次的代码要怎样写呢?我也给个参考:
  1. module fulladd(cout, sum, ain, bin, cin);
  2.         input                 ain, bin, cin;                //input
  3.         output                 sum, cout;                        
  4.         
  5.         wire                 sum;                                //summation
  6.         wire                 cout;                                //carry output
  7. //________________________cut__________________________//
  8. assign sum = ain ^ bin ^ cin;
  9. assign cout = (ain & bin) | (bin & cin) | (ain & cin);

  10. endmodule
复制代码本周问题来了:
1、设计一个10进制计数器;
2、设计3-8译码器。
欢迎各位朋友们积极跟帖回答交流,希望能和大家在学习FPGA的道路上携手共进,共同进步,如果有任何问题也可回帖探讨!

【FPGA每周一练】FPGA的HDL建模第一周

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
18条回答
ppa3278
1楼-- · 2019-07-16 20:40
 精彩回答 2  元偷偷看……
ppa3278
2楼-- · 2019-07-17 00:08
  1. //38译码1
  2. module decode(
  3. input wire [2:0]a,
  4. output wire [7:0]y
  5.     );
  6. assign y[0] = ~a[2] & ~a[1] & ~a[0];
  7. assign y[1] = ~a[2] & ~a[1] & a[0];
  8. assign y[2] = ~a[2] &  a[1] & ~a[0];
  9. assign y[3] = ~a[2] & a[1] & a[0];
  10. assign y[4] = a[2] & ~a[1] & ~a[0];
  11. assign y[5] = a[2] & ~a[1] & a[0];
  12. assign y[6] = a[2] & a[1] & ~a[0];
  13. assign y[7] = a[2] & a[1] & a[0];
  14. endmodule
复制代码

评分

参与人数 1 +2 收起 理由 chenchu0910 + 2 您的帖子很精彩,期待您分享的下一个帖子!.

查看全部评分

ppa3278
3楼-- · 2019-07-17 03:55
  1. //for循环实现
  2. module decode38v2(
  3. input wire [2:0]xin,
  4. output reg [7:0]yout
  5.     );
  6.          
  7. integer i;

  8. always @ *
  9. begin
  10.         for(i = 0; i < 8; i = i + 1)
  11.                 begin
  12.                 if(xin == i)
  13.                         yout[i] = 1;
  14.                 else
  15.                         yout[i] = 0;
  16.                 end
  17. end


  18. endmodule
复制代码
天使的名字就是
4楼-- · 2019-07-17 07:15
刚学FPGA不久,我也贴一个
  1. module decode138(G,IN,OUT);
  2.   input[2:0] G,IN;
  3.   output[7:0] OUT;
  4.   reg[7:0] OUT;
  5.   always@(G or IN or OUT)
  6.     if(G==3'b100)
  7.             case(IN)
  8.                    3'b000: OUT <= 8'b11111110;
  9.                         3'b001: OUT <= 8'b11111101;
  10.                         3'b010: OUT <= 8'b11111011;
  11.                         3'b011: OUT <= 8'b11110111;
  12.                         
  13.                         3'b100: OUT <= 8'b11101111;
  14.                         3'b101: OUT <= 8'b11011111;
  15.                         3'b110: OUT <= 8'b10111111;
  16.                         3'b111: OUT <= 8'b01111111;
  17.                 endcase
  18.     else
  19.               OUT<=8'b11111111;
  20. endmodule
复制代码

评分

参与人数 1 +1 收起 理由 chenchu0910 + 1 原创技术先锋,加分鼓励!

查看全部评分

天使的名字就是
5楼-- · 2019-07-17 09:28
天使的名字就是 发表于 2014-11-27 21:22
刚学FPGA不久,我也贴一个

嗯嗯,谢谢您的指点!
18972375993
6楼-- · 2019-07-17 12:07
 精彩回答 2  元偷偷看……

一周热门 更多>