Guest User

Untitled

a guest
Feb 4th, 2017
165
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. `timescale 1 ns / 1 ns
  2.  
  3. module CORDIC_ABS_tb;
  4.  
  5.   localparam pi = 3.1415926535897932384626433832795;
  6.  
  7.   wire start;
  8.   reg signed [15:0] X;
  9.   reg signed [15:0] Y;
  10.   wire [15:0] abs;
  11.   wire ce_out;
  12.  
  13.   reg clk = 0;
  14.  
  15.   reg [4:0] cnt = 0;
  16.  
  17.   real phase1 = 0;
  18.   real phase2 = 0;
  19.  
  20.   assign start = (cnt == 0);
  21.  
  22.   always
  23.     #5 clk = !clk;
  24.  
  25.   always @(posedge clk)
  26.     cnt <= cnt + 1'b1;
  27.  
  28.   always @(posedge clk) begin
  29.     if (start) begin
  30.       phase1 <= phase1 + (pi / 20);
  31.       phase2 <= phase2 + (pi / 300);
  32.       X <= $rtoi(($cos(phase1) * (1 + 0.5 * $sin(phase2))) * 15'b010_0000_0000_0000);
  33.       Y <= $rtoi(($sin(phase1) * (1 + 0.5 * $sin(phase2))) * 15'b010_0000_0000_0000);
  34.     end
  35.   end
  36.  
  37.   CORDIC_ABS CORDIC_ABS_inst (
  38.     .clk(clk),
  39.     .start(start),
  40.     .X(X),
  41.     .Y(Y),
  42.     .abs(abs),
  43.     .ce_out(ce_out)
  44.   );
  45. endmodule
Add Comment
Please, Sign In to add comment