Windows Bios Settings
đź’˝

Windows Bios Settings

Tags
c
c++
arduino
FPGA
Published
Author
Hardware and software emulation of Windows Bios Settings. Check out the repo here, and watch a video demo here. Thank you to everyone who lent us the hardware possible for this project!
Our hardware setup in the FPGA lab.
Our hardware setup in the FPGA lab.

Overview

At a high-level, this project monitors emulated “CPU temperature”, then maps the current temperature to a PWM command that drives a cooling fan, along with other neat Windows Bios features.
All the processing is done on an Altera V FPGA configured to Nios II architecture, programmed in C.
All the processing is done on an Altera V FPGA configured to Nios II architecture, programmed in C.
The final systems architecture.
The final systems architecture.
 

Cooling Algorithm and Hardware

Temperature calibration and ADC transfer function finally working together.
Temperature calibration and ADC transfer function finally working together.
 
Before connecting all the hardware to the dev board, we made sure everything worked on an Arduino MCU beforehand. We then began by prototyping the PWM algorithm using a software timer, then a hardware timer, then a hardware timer using interrupts on the rising and falling edge of the signal for CPU efficiency.
Once the PWM algorithm was stable, the next task was to get the temperature sensor calibrated to room temperature, and updating in real-time on the dev board’s ADC, and displaying this value on the 7-segment display.
 
The dev board the FPGA is on runs at 3V3 logic with a 100MHz clock, but the fan required a 5V PWM signal at 20KHz. This meant we had to scale the clock speed for our PWM signal, and use a level shifter, but it couldn’t properly drive the fan at 20KHz, as the rising edge time was too long.
 
Unstable PWM signal with 1K pull up resistors on the level shifter.
Unstable PWM signal with 1K pull up resistors on the level shifter.
We swapped out the pull up resistors on the level shifter from 10k to a lower value, but it resulted in a lot of ringing. In the end, we ended up removing the level shifter and driving the fan at 3V3, which meant we lost 16% power at max capacity.

VGA, PS2 Keyboard, and Audio

We wanted to go for a Windows 95 aesthetic, which thanks to Annie and the old VGA monitors, turned out pretty realistic. The VGA updates the current CPU temperature, fan speed, and CPU load in real time. The user is able to control the interface using a PS2 keyboard to switch between settings, and if they choose to exit, the program goes into BSOD (Blue Screen of Death) mode.
 
notion image
Â