aboutsummaryrefslogtreecommitdiffstats
path: root/tests/asicworld/code_verilog_tutorial_addbit.v
blob: 22063b052777f79cc732e44662e75d8eca27b479 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
module addbit (
a      , // first input
b      , // Second input
ci     , // Carry input
sum    , // sum output
co       // carry output
);
//Input declaration
input a;
input b;
input ci;
//Ouput declaration
output sum;
output co;
//Port Data types
wire  a;
wire  b;
wire  ci;
wire  sum;
wire  co;
//Code starts here
assign {co,sum} = a + b + ci;

endmodule // End of Module addbit
n> yes ``` You should then be able to use the keycodes below to change the backlight level. ## Keycodes |Key |Description | |---------|------------------------------------------| |`BL_TOGG`|Turn the backlight on or off | |`BL_STEP`|Cycle through backlight levels | |`BL_ON` |Set the backlight to max brightness | |`BL_OFF` |Turn the backlight off | |`BL_INC` |Increase the backlight level | |`BL_DEC` |Decrease the backlight level | |`BL_BRTG`|Toggle backlight breathing | ## Caveats This feature is distinct from both the [RGB underglow](feature_rgblight.md) and [RGB matrix](feature_rgb_matrix.md) features as it usually allows for only a single colour per switch, though you can obviously use multiple different coloured LEDs on a keyboard. Hardware PWM is only supported on certain pins of the MCU, so if the backlighting is not connected to one of them, a software implementation will be used, and backlight breathing will not be available. Currently the supported pins are `B5`, `B6`, `B7`, and `C6`. ## Configuration To change the behaviour of the backlighting, `#define` these in your `config.h`: |Define |Default |Description | |---------------------|-------------|-------------------------------------------------------------------------------------------------------------| |`BACKLIGHT_PIN` |`B7` |The pin that controls the LEDs. Unless you are designing your own keyboard, you shouldn't need to change this| |`BACKLIGHT_LEVELS` |`3` |The number of brightness levels (maximum 15 excluding off) | |`BACKLIGHT_BREATHING`|*Not defined*|Enable backlight breathing, if hardware PWM is used | |`BREATHING_PERIOD` |`6` |The length of one backlight "breath" in seconds | ## Hardware PWM Implementation When using the supported pins for backlighting, QMK will use a hardware timer configured to output a PWM signal. This timer will count up to `ICRx` (by default `0xFFFF`) before resetting to 0. The desired brightness is calculated and stored in the `OCRxx` register. When the counter reaches this value, the backlight pin will go low, and is pulled high again when the counter resets. In this way `OCRxx` essentially controls the duty cycle of the LEDs, and thus the brightness, where `0x0000` is completely off and `0xFFFF` is completely on. The breathing effect is achieved by registering an interrupt handler for `TIMER1_OVF_vect` that is called whenever the counter resets, roughly 244 times per second. In this handler, the value of an incrementing counter is mapped onto a precomputed brightness curve. To turn off breathing, the interrupt handler is simply disabled, and the brightness reset to the level stored in EEPROM. ## Backlight Functions |Function |Description | |----------|-----------------------------------------------------------| |`backlight_toggle()` |Turn the backlight on or off | |`backlight_enable()` |Turn the backlight on | |`backlight_disable()` |Turn the backlight off | |`backlight_step()` |Cycle through backlight levels | |`backlight_increase()` |Increase the backlight level | |`backlight_decrease()` |Decrease the backlight level | |`backlight_level(x)` |Sets the backlight level to specified level | |`get_backlight_level()` |Return the current backlight level | |`is_backlight_enabled()`|Return whether the backlight is currently on | ### Backlight Breathing Functions |Function |Description | |----------|----------------------------------------------------------| |`breathing_toggle()` |Turn the backlight breathing on or off | |`breathing_enable()` |Turns on backlight breathing | |`breathing_disable()` |Turns off backlight breathing |