Jekyll2022-12-13T22:13:20+00:00https://yatian-liu.github.io/feed.xmlYatian LiuA website about Yatian Liu's life and career.
Recent Progress on the Mic Array Project - Ethernet2020-11-28T00:00:00+00:002020-11-28T00:00:00+00:00https://yatian-liu.github.io/2020/11/28/recent-progress<p>After a long expedition I finally got the Ethernet subsystem working together
with the filter subsystem! I wrote a finite state machine for storing the data
from the filters into a RAM that is accessible by Intel’s soft CPU core called
Nios II, and modified the C code given for the Ethernet IP core to send the data
in the RAM to the Ethernet IP core’s TX data line. The Ethernet IP core only
supports layer 2 (i.e. data link layer) of the TCP/IP stack and using the full
TCP/IP stack requires a full operating system, which introduces large overhead.
Since our application of sending data from microphone to a computer has tight
timing constraints (the data transmission rate must be higher than the data
generation rate), I decided to run the C code on bare metal to speed up the data
handling process and manually add UDP and IP headers. Interrupts are fired when
new data come in so that the soft CPU core can collect the new data efficiently.
There are some subtleties to deal with and I work part-time on the project after
the Fall semester began so the progress was slow, but finally it is done.</p>
<p>The current system is tested on a two-microphone setup. For the next steps, our
group is considering testing the system on a microphone array we have, and then
try to train the working microphone array for sound source localization using
machine learning methods. We will try various ways of training, for instance
end-to-end training and pre-processing like beamforming.</p>Yatian LiuAfter a long expedition I finally got the Ethernet subsystem working together with the filter subsystem! I wrote a finite state machine for storing the data from the filters into a RAM that is accessible by Intel’s soft CPU core called Nios II, and modified the C code given for the Ethernet IP core to send the data in the RAM to the Ethernet IP core’s TX data line. The Ethernet IP core only supports layer 2 (i.e. data link layer) of the TCP/IP stack and using the full TCP/IP stack requires a full operating system, which introduces large overhead. Since our application of sending data from microphone to a computer has tight timing constraints (the data transmission rate must be higher than the data generation rate), I decided to run the C code on bare metal to speed up the data handling process and manually add UDP and IP headers. Interrupts are fired when new data come in so that the soft CPU core can collect the new data efficiently. There are some subtleties to deal with and I work part-time on the project after the Fall semester began so the progress was slow, but finally it is done.Report for My Summer Work on the Mic Array Project2020-10-08T00:00:00+00:002020-10-08T00:00:00+00:00https://yatian-liu.github.io/2020/10/08/summer-work-report<p>I wrote a <a href="/public/PDM_PCM_Signal_Conversion_FPGA.pdf">report</a> for my summer
work on the microphone array as a required submission for my summer lab intern.
The report is written in the format of a short conference paper and presents my
part of the work on the microphone array project in detail, so I think it is
worth being put on this website. To summarize, more rigorous tests on the CIC
and the FIR filter’s performance were conducted using both simulation and the
real hardware after the FIR filter was working. I started working on the
Ethernet data transmission in mid August but the combined system is still not
working. We can now send and receive constant data using the Triple-Speed
Ethernet IP Core given by Intel, but the data interfaces of the filter and the
Ethernet IP core are quite different so we need to figure out the glue logic
between the two interfaces.</p>Yatian LiuI wrote a report for my summer work on the microphone array as a required submission for my summer lab intern. The report is written in the format of a short conference paper and presents my part of the work on the microphone array project in detail, so I think it is worth being put on this website. To summarize, more rigorous tests on the CIC and the FIR filter’s performance were conducted using both simulation and the real hardware after the FIR filter was working. I started working on the Ethernet data transmission in mid August but the combined system is still not working. We can now send and receive constant data using the Triple-Speed Ethernet IP Core given by Intel, but the data interfaces of the filter and the Ethernet IP core are quite different so we need to figure out the glue logic between the two interfaces.Mid-Summer Report for the Microphone Array Project2020-07-14T00:00:00+00:002020-07-14T00:00:00+00:00https://yatian-liu.github.io/2020/07/14/mid-summer-report<p>This is my report for the work I have done for the microphone array project
after half of the summer vacation has passed and what I plan to achieve in the
rest of the summer.</p>
<h2 id="what-i-have-done">What I have done</h2>
<p>At the beginning of May, I was admitted to the SPQR Lab for the microphone array
project. In the first two weeks, I read two papers about microphone arrays and
knew the basic structure of it: PDM microphones, CIC and FIR filters, and
on-FPGA circuits or PC programs for beamforming. After that, I made my
rudimentary personal website, which is this website. Since it is my first time
making a website by writing code, it took me several days to set it up, but it
was time well spent. In the following month, I mainly worked on the CIC filter
and the FIR filter. I first learned how to use the Quartus Prime software for
FPGA development with the help of Julia. It is a large and versatile software,
and I am still learning new features of it. Then, I tried to get the CIC filter
working. I learned about the structure and frequency response of the filter and
did a presentation for my study, which gave me a much deeper understanding of
the filter than before. I also reviewed EECS 216’s content to better understand
digital signal processing. To test the filter’s functionality, I first used a
sine wave file given by Julia as input signal and then wrote a MATLAB script to
generate a sine wave sweep as input under the advise of Prof. Alanson Sample.
The debugging process took considerable time, but finally the CIC filter works
as expected now. The FIR compensation filter is also added and debugged, but all
my current tests are simulations, so I am working on connecting the microphone
to the FPGA board and upload the program to see the filter’s real world
performance.</p>
<h2 id="what-i-plan-to-do">What I plan to do</h2>
<p>Since the filtering part is almost done, I believe I can get the physical
microphone with filters work in this week, hopefully by today. After this part,
there is still plenty of work to be done. I need to work together with Sarthak
for the data transmission part, and I also need to adjust the parameters of the
filters to match the microphone arrays we are going to use instead of the
testing microphone I am using now. Once the program works for the microphone
array, the beamforming development can be started. It may take considerable time
and thus may not be finished by the end of the summer. If I could continue
working on the project after the fall semester starts, I could help with
exploring the applications of the microphone array when the beamforming is done.</p>Yatian LiuThis is my report for the work I have done for the microphone array project after half of the summer vacation has passed and what I plan to achieve in the rest of the summer.My First Post2020-05-28T00:00:00+00:002020-05-28T00:00:00+00:00https://yatian-liu.github.io/2020/05/28/first-post<p>This is my first post on this blog! I’ve spent some time on learning how to use
Jekyll and modify its theme templates. In the following weeks, I plan to log my
progress on the SPQR Lab project and other projects, as well as other
interesting things.</p>Yatian LiuThis is my first post on this blog! I’ve spent some time on learning how to use Jekyll and modify its theme templates. In the following weeks, I plan to log my progress on the SPQR Lab project and other projects, as well as other interesting things.