fix clocks
authorThomas Pietrzak <thomas.pietrzak@gmail.com>
Tue, 4 Dec 2018 13:52:09 +0000 (14:52 +0100)
committerThomas Pietrzak <thomas.pietrzak@gmail.com>
Tue, 4 Dec 2018 13:52:09 +0000 (14:52 +0100)
fpga/forcefader.srcs/sources_1/new/forceconverter.v
fpga/forcefader.srcs/sources_1/new/spring.v
fpga/forcefader.v
fpga/forcefader.xpr
fpga/forcefader_ts.wcfg

index 4a32a651012df0385bf25a94dd271c4679a2187a..bd686707be24b638b4e8a0fbbf39288d8db8b13e 100644 (file)
@@ -1,25 +1,36 @@
 module forceconverter(
   input sysclk,
-  input signed [15:0] input_forcevalue,
+  input signed [16:0] input_forcevalue,
   output output_direction,
-  output reg output_pwm
+  output reg output_pwm = 0
 );
   
-  wire [15:0]absforce;
+  wire [16:0]absforce;
   assign absforce = input_forcevalue < 0 ? - input_forcevalue : input_forcevalue;
   
-  assign output_direction = input_forcevalue[15];
+  assign output_direction = input_forcevalue[16];
   
-  reg [9:0] slowclkcounter;
-  always @(posedge sysclk) slowclkcounter <= slowclkcounter + 1;
-
+  // 2.94KHz
+  reg [11:0] slowclkcounter = 0;
+  reg [11:0] currentamplitude = 0;
+  always @(posedge sysclk) begin
+    slowclkcounter <= slowclkcounter + 1;
+    if (slowclkcounter == 0) begin
+      output_pwm <= ~output_pwm;
+      currentamplitude <= absforce[15:4];
+    end
+    else if (slowclkcounter == currentamplitude) begin
+      output_pwm <= ~output_pwm;
+    end
+    end
+/*
   wire slowclk; //1.9kHz
   assign slowclk = slowclkcounter[9];
   
-  reg [15:0] forcecnt;
+  reg [15:0] forcecnt = 0;
   always @(posedge slowclk) begin
     forcecnt <= forcecnt + 1;
     if ((forcecnt == 0) ^ (forcecnt == absforce)) output_pwm <= ~output_pwm;
   end
-
+*/
 endmodule
index 21e54bc96c0c1fe1532cbf5deb5cd29ba95270d7..6627c6518fd42fc51d91aae0506b82fca805252c 100644 (file)
@@ -2,7 +2,7 @@ module spring (
   input [11:0] position,
   input [11:0] endposition,
   input [7:0] stiffness,
-  output signed [15:0] outputforce
+  output signed [16:0] outputforce
   );
   
   assign outputforce = stiffness * (endposition - position);
index 0f602ff5deaa4af71a6eec6475a3d1cb5d0bebb8..1753d02b2405c11fbc1548cc038fd0c0e135b7b7 100644 (file)
@@ -38,7 +38,7 @@ module forcefader (
     .vn_in(vn_in)
     );
 
-  wire signed [15:0] outputforce;
+  wire signed [16:0] outputforce;
   
   //compute spring force
   spring spring_instance(
index ce6469574bc554c62bc542d20079918db0769c86..d86b5d2e448986e3ead057d164b86772a0bca5b5 100644 (file)
@@ -32,7 +32,7 @@
     <Option Name="DSAVendor" Val="xilinx"/>
     <Option Name="DSABoardId" Val="cmod_a7-35t"/>
     <Option Name="DSANumComputeUnits" Val="60"/>
-    <Option Name="WTXSimLaunchSim" Val="14"/>
+    <Option Name="WTXSimLaunchSim" Val="35"/>
     <Option Name="WTModelSimLaunchSim" Val="0"/>
     <Option Name="WTQuestaLaunchSim" Val="0"/>
     <Option Name="WTIesLaunchSim" Val="0"/>
index f619122d84a4d3038addf151b597c6f31cad0a6a..2147f00d4d14cec48c0cae2090fcfe9f72b18162 100644 (file)
       </db_ref>
    </db_ref_list>
    <zoom_setting>
-      <ZoomStartTime time="0fs"></ZoomStartTime>
-      <ZoomEndTime time="739500000001fs"></ZoomEndTime>
-      <Cursor1Time time="0fs"></Cursor1Time>
+      <ZoomStartTime time="193010847551723fs"></ZoomStartTime>
+      <ZoomEndTime time="193306015689656fs"></ZoomEndTime>
+      <Cursor1Time time="193256821000000fs"></Cursor1Time>
    </zoom_setting>
    <column_width_setting>
-      <NameColumnWidth column_width="175"></NameColumnWidth>
-      <ValueColumnWidth column_width="146"></ValueColumnWidth>
+      <NameColumnWidth column_width="219"></NameColumnWidth>
+      <ValueColumnWidth column_width="138"></ValueColumnWidth>
    </column_width_setting>
-   <WVObjectSize size="13" />
+   <WVObjectSize size="7" />
    <wvobject type="logic" fp_name="/forcefader/sysclk">
       <obj_property name="ElementShortName">sysclk</obj_property>
       <obj_property name="ObjectShortName">sysclk</obj_property>
       <obj_property name="ElementShortName">dir</obj_property>
       <obj_property name="ObjectShortName">dir</obj_property>
    </wvobject>
-   <wvobject type="logic" fp_name="/forcefader/vp_in">
-      <obj_property name="ElementShortName">vp_in</obj_property>
-      <obj_property name="ObjectShortName">vp_in</obj_property>
-   </wvobject>
-   <wvobject type="logic" fp_name="/forcefader/vn_in">
-      <obj_property name="ElementShortName">vn_in</obj_property>
-      <obj_property name="ObjectShortName">vn_in</obj_property>
-   </wvobject>
-   <wvobject type="logic" fp_name="/forcefader/xa_p">
-      <obj_property name="ElementShortName">xa_p</obj_property>
-      <obj_property name="ObjectShortName">xa_p</obj_property>
-   </wvobject>
-   <wvobject type="logic" fp_name="/forcefader/xa_n">
-      <obj_property name="ElementShortName">xa_n</obj_property>
-      <obj_property name="ObjectShortName">xa_n</obj_property>
-   </wvobject>
-   <wvobject type="logic" fp_name="/forcefader/enable">
-      <obj_property name="ElementShortName">enable</obj_property>
-      <obj_property name="ObjectShortName">enable</obj_property>
-   </wvobject>
-   <wvobject type="array" fp_name="/forcefader/address_in">
-      <obj_property name="ElementShortName">address_in[6:0]</obj_property>
-      <obj_property name="ObjectShortName">address_in[6:0]</obj_property>
-   </wvobject>
-   <wvobject type="logic" fp_name="/forcefader/ready">
-      <obj_property name="ElementShortName">ready</obj_property>
-      <obj_property name="ObjectShortName">ready</obj_property>
+   <wvobject type="group" fp_name="group25">
+      <obj_property name="label">ADC</obj_property>
+      <obj_property name="DisplayName">label</obj_property>
+      <wvobject type="logic" fp_name="/forcefader/vp_in">
+         <obj_property name="ElementShortName">vp_in</obj_property>
+         <obj_property name="ObjectShortName">vp_in</obj_property>
+      </wvobject>
+      <wvobject type="logic" fp_name="/forcefader/vn_in">
+         <obj_property name="ElementShortName">vn_in</obj_property>
+         <obj_property name="ObjectShortName">vn_in</obj_property>
+      </wvobject>
+      <wvobject type="logic" fp_name="/forcefader/xa_p">
+         <obj_property name="ElementShortName">xa_p</obj_property>
+         <obj_property name="ObjectShortName">xa_p</obj_property>
+      </wvobject>
+      <wvobject type="logic" fp_name="/forcefader/xa_n">
+         <obj_property name="ElementShortName">xa_n</obj_property>
+         <obj_property name="ObjectShortName">xa_n</obj_property>
+      </wvobject>
+      <wvobject type="logic" fp_name="/forcefader/enable">
+         <obj_property name="ElementShortName">enable</obj_property>
+         <obj_property name="ObjectShortName">enable</obj_property>
+      </wvobject>
+      <wvobject type="array" fp_name="/forcefader/address_in">
+         <obj_property name="ElementShortName">address_in[6:0]</obj_property>
+         <obj_property name="ObjectShortName">address_in[6:0]</obj_property>
+      </wvobject>
+      <wvobject type="logic" fp_name="/forcefader/ready">
+         <obj_property name="ElementShortName">ready</obj_property>
+         <obj_property name="ObjectShortName">ready</obj_property>
+      </wvobject>
    </wvobject>
    <wvobject type="group" fp_name="group23">
       <obj_property name="label">Force</obj_property>
       <obj_property name="DisplayName">label</obj_property>
+      <obj_property name="isExpanded"></obj_property>
       <wvobject type="array" fp_name="/forcefader/input_pos">
          <obj_property name="ElementShortName">input_pos[11:0]</obj_property>
          <obj_property name="ObjectShortName">input_pos[11:0]</obj_property>
+         <obj_property name="Radix">UNSIGNEDDECRADIX</obj_property>
       </wvobject>
       <wvobject type="array" fp_name="/forcefader/spring_instance/endposition">
          <obj_property name="ElementShortName">endposition[11:0]</obj_property>
          <obj_property name="ObjectShortName">endposition[11:0]</obj_property>
+         <obj_property name="Radix">UNSIGNEDDECRADIX</obj_property>
       </wvobject>
       <wvobject type="array" fp_name="/forcefader/spring_instance/stiffness">
          <obj_property name="ElementShortName">stiffness[7:0]</obj_property>
          <obj_property name="ObjectShortName">stiffness[7:0]</obj_property>
+         <obj_property name="Radix">UNSIGNEDDECRADIX</obj_property>
       </wvobject>
       <wvobject type="logic" fp_name="/forcefader/forceconverter_instance/output_direction">
          <obj_property name="ElementShortName">output_direction</obj_property>
          <obj_property name="ObjectShortName">output_direction</obj_property>
       </wvobject>
       <wvobject type="array" fp_name="/forcefader/forceconverter_instance/absforce">
-         <obj_property name="ElementShortName">absforce[15:0]</obj_property>
-         <obj_property name="ObjectShortName">absforce[15:0]</obj_property>
+         <obj_property name="ElementShortName">absforce[16:0]</obj_property>
+         <obj_property name="ObjectShortName">absforce[16:0]</obj_property>
+         <obj_property name="Radix">UNSIGNEDDECRADIX</obj_property>
       </wvobject>
       <wvobject type="array" fp_name="/forcefader/outputforce">
-         <obj_property name="ElementShortName">outputforce[15:0]</obj_property>
-         <obj_property name="ObjectShortName">outputforce[15:0]</obj_property>
+         <obj_property name="ElementShortName">outputforce[16:0]</obj_property>
+         <obj_property name="ObjectShortName">outputforce[16:0]</obj_property>
+         <obj_property name="Radix">SIGNEDDECRADIX</obj_property>
       </wvobject>
    </wvobject>
    <wvobject type="group" fp_name="group24">
       <obj_property name="label">PWM</obj_property>
       <obj_property name="DisplayName">label</obj_property>
       <obj_property name="isExpanded"></obj_property>
-      <wvobject type="logic" fp_name="/forcefader/forceconverter_instance/slowclk">
-         <obj_property name="ElementShortName">slowclk</obj_property>
-         <obj_property name="ObjectShortName">slowclk</obj_property>
-      </wvobject>
       <wvobject type="logic" fp_name="/forcefader/forceconverter_instance/output_pwm">
          <obj_property name="ElementShortName">output_pwm</obj_property>
          <obj_property name="ObjectShortName">output_pwm</obj_property>
       </wvobject>
-      <wvobject type="array" fp_name="/forcefader/forceconverter_instance/forcecnt">
-         <obj_property name="ElementShortName">forcecnt[15:0]</obj_property>
-         <obj_property name="ObjectShortName">forcecnt[15:0]</obj_property>
+      <wvobject type="array" fp_name="/forcefader/forceconverter_instance/currentamplitude">
+         <obj_property name="ElementShortName">currentamplitude[9:0]</obj_property>
+         <obj_property name="ObjectShortName">currentamplitude[9:0]</obj_property>
+         <obj_property name="Radix">HEXRADIX</obj_property>
       </wvobject>
       <wvobject type="array" fp_name="/forcefader/forceconverter_instance/slowclkcounter">
          <obj_property name="ElementShortName">slowclkcounter[9:0]</obj_property>
          <obj_property name="ObjectShortName">slowclkcounter[9:0]</obj_property>
+         <obj_property name="Radix">HEXRADIX</obj_property>
       </wvobject>
    </wvobject>
 </wave_config>