Author Topic: Falling back to earth...  (Read 1083 times)

0 Members and 1 Guest are viewing this topic.

Offline TomS_Topic starter

  • Frequent Contributor
  • **
  • Posts: 848
  • Country: gb
Falling back to earth...
« on: March 19, 2020, 07:24:34 am »
You know those times when you feel like youre on a roll, and everything is working out. Then it stops working out, and all of a sudden you cant even seem to do something simple?

Ive hit a situation like that.

Ive started learning Verilog, and playing around with a MAX V CPLD development board.

First I made an LED blink using a clock divider module I wrote, which worked great.

Then I made a few other modules, some muxes and shift registers, and the simulations/testbenches all said they were working.

Then I got cocky and tried to string a bunch of them together into a larger design based on a discrete version that I have made, which of course didnt work.  :palm:

OK, back to basics and lets try to figure out which bit isnt working, so I decided to try and see if my pins were being toggled correctly by a microcontroller by mirroring some internal signals out to another pin and, well, I cant even get a simple buffer from one input pin to one output pin to work now...  |O

This is what I tried:

Code: [Select]
`timescale 1ns/1ps

module test_top
   (
      input loop_in,
      output reg led1
   );
   
   
//   mux_2_1 ds_data_mux (
//      .sel(loop_in),
//      .in0(1'b0),
//      .in1(1'b1),
//      .out(led1)
//   );
   
   always @(loop_in) begin
      led1 = ~loop_in;
   end
   
endmodule

I also tried led1 as a simple "output" and used an assign to set the value of it to the inverse of loop_in.

The code for the mux, which is one of the modules I wrote and the testbench said was working is:

Code: [Select]
`timescale 1ns/1ps

module mux_2_1
   (
      input wire in0,
      input wire in1,
      input wire sel,
      output out
   );
   
   assign out = sel ? in1 : in0;

endmodule

Can someone slap me the right way and figure out what is going on?

After all of this I went back to a simple LED blinky with my clock divider and that still works, so theres probably something fundamental that Im not understanding here.

Thanks!
 

Offline TomS_Topic starter

  • Frequent Contributor
  • **
  • Posts: 848
  • Country: gb
Re: Falling back to earth...
« Reply #1 on: March 19, 2020, 09:43:48 am »
Went away for a while, came back, started a new project and "tried again" and now my super simple buffer is working fine.

Not sure what I did or what is up with the other project, but I'll start building up from here and see what happens.  :-//
 

Offline TomS_Topic starter

  • Frequent Contributor
  • **
  • Posts: 848
  • Country: gb
Re: Falling back to earth...
« Reply #2 on: March 22, 2020, 09:08:28 am »
Quick update, it does help if you use the right pins on the headers of your development board.

There were a couple of GND and VCCIO pins mixed in between the IOs which threw some of my signals off. Rookie mistake.

So once I noticed that and sorted it out, actually, everything worked great. Beginners luck perhaps, but riding the clouds again. 😋
 

Online Psi

  • Super Contributor
  • ***
  • Posts: 10180
  • Country: nz
Re: Falling back to earth...
« Reply #3 on: March 22, 2020, 09:18:18 am »
One of the hard things about being an engineer is pushing through the periods when...
Your code/app/device isn't working, you have no idea why, your attempts to debug it seem to show conflicting causes and you just let the magic smoke out when slipping with the meter probe so have to rebuilt it before continuing.
Combine that with learning a new technology or language and it can be hell. But it is always always always nice and bright once you exit the tunnel.  The memory of all the tunnels you've been through in the past makes it easier and easier to get through the next one.

99% of the time the problem is something stupid or simple and you just have to keep going back to basics and backtracking the unexpected behavior as many times as needed, often intermixed with some intuition and guess work to prevent getting to stuck in a loop all day. Until you finally see the problem.

To be a good engineer you need to be happy coming up with an unlimited number of different ways to problem solve an issue until the solution or bug shows itself.
« Last Edit: March 22, 2020, 09:30:08 am by Psi »
Greek letter 'Psi' (not Pounds per Square Inch)
 
The following users thanked this post: TomS_

Offline TomS_Topic starter

  • Frequent Contributor
  • **
  • Posts: 848
  • Country: gb
Re: Falling back to earth...
« Reply #4 on: March 22, 2020, 09:39:03 am »
Yep! If there is one thing I have discovered it's that if I pursue a problem long enough I will come to an answer.

Sometimes you have to be creative, sometimes you have to get a bit medieval, but I'm yet to run into a problem that I have been unable to fix with a bit of perseverance and patience.

Quite a lot of times I actually figure it out after asking for help, or while in the process of writing up a request for help because you sort of go through your troubleshooting process and then realise there was something you didn't try, or that you should try differently, or you just have that little light bulb moment.

So I go into all problems knowing that I am yet to fail fantastically. Sometimes you just have those moments.
 


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf