Hacker Newsnew | past | comments | ask | show | jobs | submit | lochsh's commentslogin

Oxford Ionics | Senior Software Engineer | UK hybrid up to 4 days remote/1 day in office | Full time

Oxford Ionics are a quantum computing start-up building trapped-ion quantum computers. We're using Python and Rust to build our technology stack, which includes a custom optimising compiler for quantum circuits. Come join our growing team of engineers and scientists!

https://oxfordionics.bamboohr.com/jobs/view.php?id=32


Oxford Ionics | Senior Software Engineer | UK hybrid up to 4 days remote/1 day in office | Full time

Oxford Ionics are a quantum computing start-up building trapped-ion quantum computers. We're using Python and Rust to build our technology stack, which includes a custom optimising compiler for quantum circuits. Come join our growing team of engineers and scientists!

https://oxfordionics.bamboohr.com/jobs/view.php?id=32


Oxford Ionics | Embedded Software Engineers and Compiler Engineers | Full Time | ONSITE, HYBRID (Oxford, UK) | Quantum computing

Oxford Ionics is a small quantum computing start-up in Oxford, UK. We're looking for smart, motivated software engineers to join our growing team of engineers and scientists.

Rust | Python | FPGAs | qubits

This is a rare opportunity for a potentially really varied role, with the ability to make a big impact early on in the company's development. See links below for details

https://www.oxionics.com/careers

https://www.oxionics.com/software-engineer-embedded

https://www.oxionics.com/software-engineer-compiler


I'm hoping to write part 2 this weekend or next week -- I realise anyone knowledgeable of logic design won't be super excited by this first installment. It's intended mostly for people who are new like me! I look forward to writing in more detail about RISC-V and my cpu design :)


Looking forward to reading part 2. Can you or someone else say recommend some resources/tutorials for learning nmigen? Or are the official docs still the best source?


I've had this recommended and it looks v promising! https://vivonomicon.com/2020/04/14/learning-fpga-design-with...

Someone above has mentioned Robert Baruch too: https://github.com/RobertBaruch/nmigen-tutorial

I also found this helpful: http://blog.lambdaconcept.com/doku.php?id=nmigen:tutorial

And there is of course the IRC channel if you want to ask people questions, #nmigen on irc.freenode.net


I'm hoping to talk about this in the next installment where I actually talk about the design. It's been really interesting getting a feel for how the processes are different. It's something I've been aware of before from talking to hardware engineers, but I think I'm only truly understanding it now that I'm doing it myself :)


Thanks for bringing up variance -- this is a concept I've since learned about and have added a small update to the blog post about.

I understand your point about the `children_as_parents` example, I've added another update to point out that the mutability of the vector makes it problematic to have the `children` variable.


I think it's worth noting that there are multiple I2C peripherals by ST -- one for STM32F1, F4, and L1; and a different one used for STM32F0, F3, F7, L0, and L4.


Thank you for the compliment ^_^ I'm glad you found the post helpful.

This isn't a typo, actually. If you look at the documentation of the BSRR register (which is screenshotted in the blog post), it says of BRy:

> These bits are write-only [...] [Setting to 1] Resets the corresponding ODRx bit

So setting BR8 in the BSRR clears the ORD8 bit in the output data register. Because our LED is active low, this turns the LED on.

The indirection can make this a little confusing, I hope this cleans it up!


Ahh I see now, thank you for teaching me. My mistake!

Do you happen to know of any great learning resources, basically more posts like you've written that go into lots of details and explain why things are done?

Thanks again!


I'm not sure I do have suggestions for such resources sadly :( If anyone has any please drop them here!


This is lovely to hear, I'm so glad it was helpful!


Not too familiar with the content of your post, but...I love your site design - great use of space, color & serif fonts!


I love getting compliments on my site design, thanks very much.


You don't need an OS to do more advanced or efficient sleeping. You could have one of the timer peripherals generate an interrupt on a regular basis, and then put the chip in a lower power sleep mode in between interrupts.


Isn't that what an OS would do, essentially?


Yes, probably! But you can do it yourself without one.

Here is an example in C using libopencm3, that uses timers to trigger an interrupt used to flash LEDs https://github.com/libopencm3/libopencm3-examples/tree/maste...


that is basically a mini-os :)


You can set up a wakeup interrupt using a timer by moving a few values into a few registers. It doesn't require anything like an OS. Even tiny 8-bit microcontrollers can do this.


Sure, but putting the chip to sleep is one instruction, and programming the timer interval is only about a dozen instructions. So you don't really need an OS in this context.


There is a blurry line on the edges of "library" and "OS"; most people would put this particular example on the "library" side.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: