Skip to content

Instantly share code, notes, and snippets.

View kbob's full-sized avatar

Bob Miller kbob

  • Eugene, Oregon, USA
View GitHub Profile
`default_nettype none
module blinky (CLK, LED1);
input wire CLK;
output wire LED1;
parameter WIDTH = 24;
parameter CLK_HZ = 12_000_000;
reg [WIDTH-1:0] counter;
reg [7:0] led1;
@kbob
kbob / main.rs
Created December 16, 2018 13:21
I fail to understand Rust types.
#[macro_use]
extern crate vulkano;
extern crate vulkano_shaders;
extern crate winit;
extern crate vulkano_win;
use vulkano::buffer::{CpuAccessibleBuffer, CpuBufferPool, BufferUsage};
use vulkano::command_buffer::{AutoCommandBufferBuilder, DynamicState};
use vulkano::descriptor::descriptor_set::PersistentDescriptorSet;
use vulkano::device::{Device, DeviceExtensions};
# 12 MHz clock
set_io -nowarn CLK 35
# RS232
set_io -nowarn RX 6
set_io -nowarn TX 9
# LEDs and Button
set_io -nowarn BTN_N 10
set_io -nowarn LEDR_N 11
@kbob
kbob / gist:3134a65680dd3e0e0015ed7ad423824d
Created November 18, 2018 13:49
Trying to instantiate a 2F PLL -- doesn't work.
`default_nettype none
`define W 24
module top (
input CLK,
output LED1,
output LED2,
output LED3,
output LED4,
// BEGIN kbob
// This is identical to https://vulkan-tutorial.com/Drawing_a_triangle/Swap_chain_recreation
// as of 2018-06-13 except for code between the "BEGIN kbob" and "END kbob" comments.
// The original code is still there but commented out with "//-".
//
// Built with MoltenVK 1.1.73 and GLFW 20180519 for MacOS, the original never recreated
// the swap chain. It continued to draw at the original 800 by 600 resolution and scaled
// the result to fit the resized window.
//
// Also, according to GLFW doc, the glfwGetWindowSize() is not the right function to call.
// Ask Hackaday: How do you DIY a Top-Octave Generator?
// https://hackaday.com/2018/05/24/ask-hackaday-diy-top-octave-generator/?utm_source=feedburner
// Target Arduino Mega.
// N.B., Timer 1 has highest interrupt priority, so
// use it for the highest frequency oscillators.
// Note Comp Port/Pin Arduino Pin
// C OC1A PB5 pin 11
// B OC1B PB6 pin 12
@kbob
kbob / dda2.c
Created November 2, 2016 17:00
Anti-aliasing, subpixel-positioned left edge DDA.
#define EXPECT
#include <assert.h>
#include <math.h>
#include <stdbool.h>
#include <stddef.h>
#include <stdio.h>
@kbob
kbob / print_nine_digit_positive.c
Created June 10, 2016 20:22
Silly unrolled print function
#include <assert.h>
#include <stdint.h>
#include <unistd.h>
/* print nine digit positive */
char *p9dp(uint32_t n, char *p)
{
uint32_t a = n % 10;
n /= 10;
if (n) {
@kbob
kbob / main.rs
Created February 20, 2016 21:53
Trie insertion and query
struct TrieNode {
is_terminal: bool,
children: [Option<Box<TrieNode>>; 256],
}
impl TrieNode {
fn new() -> TrieNode {
let mem : TrieNode = unsafe { std::mem::zeroed() };
mem
}
// Polyphase decimation filter.
//
// Convert an oversampled audio stream to non-oversampled. Uses a
// windowed sinc FIR filter w/ Blackman window to control aliasing.
// Christian Floisand's 'blog explains it very well.
//
// This version has a very simple main processing loop (the decimate
// method) which vectorizes easily.
//
// Refs: