这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » FPGA » 带控制端的逻辑运算电路

共4条 1/1 1 跳转至

带控制端的逻辑运算电路

菜鸟
2017-06-29 15:35:06     打赏
设计一个带控制端的逻辑运算电路,分别完成正整数的平方、立方和阶乘的运算。
特别简单的一个例子,用来练手。

以下为源代码:

  1. //--------------myfunction----------
  2. modulemyfunction(clk,n,result,reset,sl);
  3. output[6:0]result;
  4. input[2:0] n;
  5. input reset,clk;
  6. input [1:0] sl;
  7. reg[6:0]result;//define input and output
  8. always @(posedgeclk)
  9. begin
  10.     if(!reset)
  11.      result<=0;
  12.     else
  13. begin
  14. case(sl)
  15. 2'd0:result<=square(n);
  16. 2'd1:result<=cubic(n);
  17. 2'd2:result<=factorial(n);
  18. endcase
  19.       end
  20. end
  21. function[6:0]square;
  22. input [2:0]operand;
  23. begin
  24. square=operand*operand;
  25. end
  26. endfunction
  27. function[6:0]cubic;
  28. input [2:0]operand;
  29. begin
  30. cubic=operand*operand*operand;
  31. end
  32. endfunction
  33. function[6:0]factorial;
  34. input [2:0]operand;
  35. reg [2:0] index;
  36. begin
  37.     factorial = 1 ;
  38.     for(index = 2; index <= operand; index =index + 1)
  39.     factorial = index * factorial;
  40.    end
  41. endfunction
  42. endmodule
  43. //--------------testmyfunc----------
  44. `include"./myfunction.v"
  45. `timescale1ns/100ps
  46. `define clk_cycle50
  47. module testmyfunc;
  48. reg[2:0] n;
  49. reg reset,clk;
  50. reg[1:0] sl;
  51. wire[6:0] result;
  52. parametertimes=20;
  53. initial
  54. begin
  55. n=0;
  56. reset=1;
  57. clk=0;
  58. sl=0;

  59. #100 reset=0;
  60. #100 reset=1;
  61. repeat(times)
  62. begin
  63. #50sl={$random}%3;
  64. #50 n={$random}%6;
  65. end
  66. #1000 $stop;
  67. end
  68. always #`clk_cycleclk=~clk;
  69. myfunctionmyfunct(.clk(clk),.n(n),.result(result),.reset(reset),.sl(sl));
  70. endmodule


高工
2020-07-25 16:06:58     打赏
2楼

学习学习


工程师
2020-07-25 17:52:13     打赏
3楼

这是啥芯片? 


工程师
2020-07-25 18:15:28     打赏
4楼

verilog 语言!


共4条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]