PoorCollegeStudent

Members
  • Content Count

    20
  • Joined

  • Last visited

  • Days Won

    1

PoorCollegeStudent last won the day on June 10 2017

PoorCollegeStudent had the most liked content!

About PoorCollegeStudent

  • Rank
    Member

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Hello Digilent Community, I am now officially done with my term and I want to share what my experience was like, as per @D@n's question. I would like to attach our final report here (we got an 86 on it, so please understand that it won't be the rest report haha). It was quite rushed since my partner and I were travelling during the last few days before the turn in date and the code in the appendices are quite scuffed. Vivado won't print PDFs in color and I haven't figured out how to fix the sizing or formatting, which is really inconvenient because it looks bad and not easy to read. If anyone has any questions about the code or writing at all, please feel free to private message me or just respond on this forum by tagging me! The idea behind how we wanted it to work, what it actually became, the struggles we had, and our theory on why it did not work again are included in the report along with our VHDL files and some testbench images. If they end up being too small of pictures, just let me know and i can attach the original ones here so it's easier to see. Thank you all for your help and consideration; it means to the world to me now and it meant the world to me before while I was working on this project.
  2. Also a question, will FPGAs act unreliably after being operated/plugged in for a long time (long as in 10+ hours at a time). My demo is today (Friday) and our project still doesn't work unfortunately. Without having touched anything, I came back from dinner to see that the display only seems to like the keys "2", "7", and "9", but perhaps that could be something to do with the keypad decoder. Might not get great marks on this project, but I had a good time on this discussion post. Thank you all for your time and contributions.
  3. @D@n would that example happen to be in Verilog? I'm not exactly familiar with the language, we've just been using VHDL in class. I'm guessing because I can't recognize a bunch of the syntax, like the @(posedge i_clk) and 1'b0 or !counter[20]. Seems like a very cool application though! Thank you!
  4. Oh right I remember this from an in-class exercise we had once. I'll try it out.
  5. I am now having some trouble. The inputs will display on the LCD but the output will not. I have testbenched every module and they work as expected. There might be something wrong with the keypad interface. I basically need it to only output once per press rather than continuously like it does now, and I have no way of doing this yet.
  6. Hello all, 2:24am update -- I have been able to debounce the keypad somewhat like maybe 85%. Sometimes the number repeats itself once because I guess the keypad itself is VERY jiggly and I'm already accounting for a 400 us bounce limit in my debouncer.. Otherwise, it seems to work fine. It stops after 4 digits and does not continue to display past that. New values can only display after pressing one of the operation buttons (i.e. +, -, *, square) or the equal button. I had to change the negative sign to the center button on the FPGA and a clear button to the right button on the FPGA. Having the "F" key on the keypad was creating very weird results that I did not want to deal with simply because I don't have the time right now given demos are due this Friday. Basically, by setting "F" to a negative sign, the sign would not even display with a press of the "F" key but rather when the first digit was a "2", "3", "6", or "7" (I can't remember since I fixed it since then but I'm pretty sure these were the keys if it even matters). I tried making the negative sign indicated by the three, rightmost LEDs on the Basys3 board and they also lit up with these key values INSTEAD of the designated "F" key. In the code I even made a signal that went high only when "1111" was output by the keypad signals, so I couldn't even see a way this would be the case. Very strange outcome, indeed. Since assigning the negative sign button to the center button on the FPGA, this issue stopped (thank god) so I have at least concluded that the issue was with the keypad itself and perhaps some timing issues with the debouncer. However, due to the fact that the keys that actually output a negative sign don't really have a clear connection/correlation/relationship I have no clue as to why this error came about. Thank you all for your help and advice thus far. Tomorrow (thursday), I will be port mapping all the components of the calculator together. I'm thinking of taking a load signal from one of the components and using that to assign a new LCD_CMDS signal that holds the calculated value and have an if-statement assign either of the LCD_CMDS signals to the JB port given the state of the load signal so the display shows the currently desired values (load = high for output, low for input). I'm thinking that if the output is currently being displayed on the LCD, then the press of any number key (i.e. 0 through 9) will reset the display to show the inputs again. As much as I am anxious to try this out, I think I'm at my limit for tonight (this morning).
  7. @D@n I did assume that at first too, so I looked through my code for an hour but my startup sequence is the same as the one in the example code, so it seems unlikely now (?) The black-box error started to occur right when I plugged in the display to the ports on the board and turned on the board, so I hadnt even run the program yet. Just weird for me all around. Now it's alright though so I think you're right in that the example code sent it through the startup sequence again in a way that mine doesn't, I just can't see why as of yet.
  8. Update again: Sorry for the spam to everyone who is probably getting these notifications/emails. The black bars went away when I ran the original example code that displays "Hello From Digilent" which I guess forced the contrast voltage back or something (not really sure how because I don't see anything for that in the code) but I'm not going to question it because it helped.
  9. Hello, I have come across a new problem. Black boxes across the first line of the display and nothing seems to work, no buttons presses do anything. I think this is a connectivity issue because it worked fine for a while today, and after coming back from eating it started to do this. I will try another computer.
  10. It is quite the lengthy discussion @D@n and @hamster. I'll be sure to take a look at it soon. This is a field I may want to dive more into throughout the rest of my college career.
  11. Hello all, Update: I have manged to make keys appear one by one with reliable timing. Thank you to everyone here who helped make this possible. It included an extra state in the current example code's fsm that only goes to the stInitDne when a specific key is pressed. The keys that allow this transition of state would be the number keys (i.e. 0 through 9). I also managed to make it stop at 4 digits and clear when an operation button (+, -, *, =) is pressed in order to make room for the next number. I did this by initializing the LCD_CMDS with blanks and used a counter sensitive to the number keys to replace a specific vector in the LCD_CMDS's array with the corresponding ASCII value. I will put a 5th blank before these numbers to make room for a negative sign. Currently I am trying to debounce the keys because everytime I test it, the third digit (always the third digit) produces some weird character like a capital C or an alpha symbol. I tried implementing a debouncer into the code, but now it recognizes the keys to the right of the ones pressed. In other words, pressing "1" will show "2" on the display or pressing "8" will display "9". If anyone has any suggestions on how to get around this, that would be great, but for now I'll just keep you all posted when I find a solution.
  12. Hello, Just realized the H probably means hex, but using that line of code doesn't work. I've decided beggars can't be choosers since my demo day is in 2 days. I'm sticking to one line of display. My strategy right now will be taking the LCD_CMDS signal and initializing it with the first few original commands and 4 blanks. A press of a key on the keypad will replace these blanks with characters and the LCD will update continuously to display these numbers. I will create a second signal like LCD_CMDS for the output/computed value, and I'll make an if-statement to assign one of two LCD_CMDS signals to the JB port (JA in the example code) so that the LCD will display either the inputs or the output.
  13. @D@n Hello, I had seen that before, but I wasn't aware I could set it using a command. I tried setting a value in my LCD_CMDS signal like 4 => "00"&X"40" based on the datasheet but that didn't seem to do anything. It mentions that the second line starts at address 40H, but what does that "H" mean?
  14. Hello @D@n, thank you for your response! Yes I have looked at that datasheet because it's also linked from the Digilent website for the LCD display, but I do not think it says anywhere there how I can start displaying on the second line, just how to enable the 2nd line. @hamster I am going to try what you suggest and see what happens. Thanks for letting me know about the debug hub warning too!