
きっと親切心でメールをくれたんだと思うんだけど,オレはさきっぽを追っかける事自体が目的みたいなもんだからdupしてても一向に構わんのだけどなぁ.
結局upstreamの中の人が気に入ればdownstreamのchangesetはupstreamにmergeされて,結果全てのdownstreamに還元される訳だし,DSCMってそう言う為のモノじゃねぇの?
つーか,なんでみんなgit使ってんだよ!!1 :DDD
O HAI THIS BLOG PURPZIEZ 2 B UZED AZ MAH PLESIOUS MEM. :)
PORTAGE_BINHOST=http://tinderbox.dev.gentoo.org/default-linux/powerpc/ppc32 \ボブ「へぇ,いつもemergeするのとあんまり変わらないね.」
emerge -gK =sys-devel/binutils-2.18-r3
05/10 03:54:30 madつまり,敢えてsoftware sound synthesizeしないっつーことですか?
I'm planning on making sound generation stuff
05/10 03:56:23 mad
most of that stuff is based around a phase register being incremented
by the frequency on each sound cycle (which is pretty low rate -
typically around 44khz)
05/10 04:02:43 bpadalino
sounds like a cordic should help you out
05/10 04:04:46 hiyuh
cordic is not for making sound, imho.
05/10 04:09:48 hiyuh
that sounds like singletone, variable freq in narrow range, and
presicion is not so important.
05/10 04:10:38 hiyuh
maybe, making rom-based nco is enough to do.
05/10 04:14:39 bpadalino
i don't know if a saw wave would sound very good, but as a phase
accumulator - a cordic sounds like it would work well
05/10 04:30:24 hiyuh
I meant cordic is expensive for that use.
05/10 04:30:29 hiyuh
and saw wave + filter for singletone is not a possibility, anyway.
05/10 04:32:34 hiyuh
phase accum -> sin or cos rom in appropriate precision -> singletone,
it's simple rom-based nco.
05/10 04:40:47 bpadalino
you really think a cordic is that expensive ?
05/10 04:51:49 hiyuh
bpadalino: yes
05/10 04:51:58 bpadalino
interesting
05/10 04:55:54 bpadalino
hiyuh, so if you wanted to create 20 tones, how would you go about
doing that ?
05/10 04:57:07 hiyuh
20 tones in same time?
05/10 04:57:31 bpadalino
yeah
05/10 04:59:05 hiyuh
these tones are elaborate-time fixed or run-time fixed?
05/10 05:00:05 hiyuh
I meant these tones are fixed before logic synthesize, or not.
05/10 05:00:29 bpadalino
runtime fixed tones .. frequency fixed before synthesis, but phase
programmable ..
05/10 05:00:44 bpadalino
and i want the sum of the 20 tones on the output
05/10 05:07:54 hiyuh
you mean "amplitude * (sin(2*pi*f1*t + theta1(t)) + ... sin(2*pi*f20*t
+ theta20(t)))"?
05/10 05:09:10 bpadalino
yeah
05/10 05:10:53 hiyuh
if I were you, I'd like to make semi-fixed digital filter or just
do IFFT.
05/10 05:12:42 bpadalino
that's what i had figured before, but i was just curious what someone
else might have thought
05/10 05:13:00 hiyuh
heh
05/10 05:14:18 bpadalino
i would like to do my own generic systolic FFT sometime ... i think
that might be fun
05/10 05:16:23 mad
the tones parameters are written to at performance time
05/10 05:18:05 mad
It's for music generation, so the applicable freqs are about 20hz to
20khz (although tones over something like 4khz aren't particularly
musical)
05/10 05:19:17 anonissimus
mad: but as harmonics they are
05/10 05:19:33 mad
Precision has to be at least 1%, esp. in the "most common range"
(around 50hz ~ 1000hz)
05/10 05:19:50 mad
anonissimus: yeah, but those are generated from another process
05/10 05:21:16 anonissimus
ah
05/10 05:21:38 anonissimus
know more on music than on generting it with hardware :)
05/10 05:21:57 mad
My plan is: start with pure phase accumulator, then twist the phase
around in a couple of functions (incl. one that uses multiplication),
then use sine wave/funky waveform LUT, apply volume and panning,
sum the channels together, DAC
05/10 05:24:12 mad
Uses about 140 bits of registers per channel
05/10 05:27:44 mad
A real practical design would actually be sample based instead
(with samples in RAM)
05/10 05:29:23 hiyuh
you know, your plan violates my assumption that described in the
above expr.
05/10 05:29:25 hiyuh
so what I was saying is not good way for you.
05/10 05:29:59 mad
mm, right
05/10 05:31:35 mad
sound synthesis isn't so hard because the sampling rate is low
anyways... and you can do it well in software if you have enough CPU
05/10 05:32:14 hiyuh
yeah, that's why soft synth is popular atm.
05/10 05:32:40 mad
no kidding, since it pretty much solves it
a/bench/BENCH_NARROWER.vhd | 148 -------やっぱ,10kSLOC逝ってないYO!!1 :DDD
a/vhdl/CPUMP.vhd | 275 --------------
a/vhdl/NARROWER.vhd | 418 ----------------------
a/vhdl/WIDER.vhd | 350 ------------------
b/bench/BENCH_HS_BUS.vhd | 105 +++++
b/bench/BENCH_SB.vhd | 218 +++++++++++
b/bench/BENCH_UDACCUM.vhd | 100 +++++
b/vhdl/HS_BUS.vhd | 328 +++++++++++++++++
b/vhdl/SB_MASTER.vhd | 629 +++++++++++++++++++++++++++++++++
b/vhdl/SB_SLAVE.vhd | 339 ++++++++++++++++++
b/vhdl/TX_SRC_MUX.vhd | 180 +++++++++
b/vhdl/TX_SX_FEBE.vhd | 338 ++++++++++++++++++
b/vhdl/UDACCUM.vhd | 219 +++++++++++
bench/BENCH_BCMUX.vhd | 7
bench/BENCH_BER_IF_REG.vhd | 92 ++--
bench/BENCH_LDPCDDB.vhd | 471 +++++++++++++++----------
bench/BENCH_LDPCEDB.vhd | 398 ++++++---------------
bench/BENCH_PE2RST.vhd | 49 +-
bench/BENCH_TX_SMAP.vhd | 43 +-
bench/METABENCH_LDPCDDB.vhd | 161 ++------
bench/METABENCH_LDPCEDB.vhd | 140 ++-----
bench/METAMETABENCH_LDPCDDB.vhd | 104 +++++
bench/METAMETABENCH_LDPCEDB.vhd | 4
stim/STIM_PN_DATA.vhd | 156 +++++++-
stim/STIM_RX_DATA_CARR.vhd | 139 ++++++-
stim/STIM_TX_DATA_CARR.vhd | 135 ++++++-
vhdl/AFIFO.vhd | 30 +
vhdl/BER_IF_REG.vhd | 743 ++++++++++++++++++++--------------------
vhdl/CLDPCDOP.vhd | 11
vhdl/COMMON_TYPE_PKG.vhd | 7
vhdl/DFE_NEGOTIATE.vhd | 282 ++++++++++-----
vhdl/ELDPCDII.vhd | 21 -
vhdl/FCOD.vhd | 24 -
vhdl/HD2BO.vhd | 123 +++---
vhdl/LDPCD.vhd | 35 -
vhdl/LDPCE.vhd | 41 +-
vhdl/LDPCEDB.vhd | 30 +
vhdl/LLR2SC.vhd | 57 ++-
vhdl/PE2RST.vhd | 310 +++++++++++-----
vhdl/PN_BLOB.vhd | 89 +---
vhdl/PN_NEGOTIATE.vhd | 274 ++++++++++----
vhdl/PSQUASH.vhd | 72 ++-
vhdl/S2BER_IF.vhd | 66 +--
vhdl/SB2SSB.vhd | 83 +++-
vhdl/SBSSBDD.vhd | 8
vhdl/SFIFO.vhd | 16
vhdl/VTQUEUE.vhd | 4
47 files changed, 4939 insertions(+), 2933 deletions(-)
04/30 20:42:47 algoboyポップコーンを喰えたので良しとする. :DDD
i need to create a load register, that load the value on a load
signal, should the register be combinational or clocked? It has to
hold the loaded values on the output until new values are loaded.
04/30 22:31:38 hw__
I've been told that everywhere I call a function, the function is
replaced by logic. So when I call 5 times a function I've 5 times
the same logic in my FPGA. How about procedures? Does it depend on
the class of formal/actual parameter?
04/30 23:51:23 algoboy
hw__ : it depends on where you are calling the functions. If you
write code that describes a circuit to do 5xtimes your function in
one clock cycle then it will generate 5 times the hardware. But if
you instead create a FSM and call the same function from 5 different
states it should be synthesized to 1 function hardware, depending
on if the synthesizing tool can schedule the operation and reuse
the same hardware.
04/30 23:54:05 algoboy
also the difference between a procedure and a function is that
functions have a return value, procedures don't.
04/30 23:55:30 hw__
algoboy: procedures can have "results" as well: If you use "inout"
or "out" for parameter mode
04/30 23:57:38 algoboy
yes, but i was just telling the difference between a procedure and
function. a procedure doesn't return a value. The same as a void
function in c/c++.
04/30 23:57:57 hiyuh
no
04/30 23:58:47 algoboy
no???
05/01 00:03:42 hiyuh
procedure is procedure. function is function. not less, not more.
05/01 00:03:50 hiyuh
if you really want to know what they are, read VHDL LRM or general
CS book like MIT SICP.
05/01 00:08:56 algoboy
yes a procedure is a procedure and a function is a function. I was
just telling the difference between them. You can always transform
a procedure to a function and a function to a procedure.
05/01 00:10:58 algoboy
I don't see any benefit of using procedures and functions in VHDL. If
you wan to create a "function" in VHDL create a circuit instead,
sequential or combinational. This is a much better approach.
05/01 00:12:29 hiyuh
whut?
05/01 00:13:14 hiyuh
then, haven't you ever read the two-process method paper?
05/01 00:14:58 NULL[0]
algoboy: are you a troll ?
05/01 00:15:47 hiyuh
NULL[0]: i dont think so. :)
05/01 00:16:47 NULL[0]
hiyuh: if you read his question, and the comments he made, I would
not be surprised
05/01 00:17:16 longcat
meh
05/01 00:18:28 algoboy
hiyuh: Gaisler's two process method?? What does that have to do with
procedures and functions.
05/01 00:19:00 hiyuh
algoboy: yup.
05/01 00:19:33 algoboy
yes i have, i uses the two process method almost all the time. But
i never use functions and procedures. So i don't get your question.
05/01 00:20:49 hiyuh
well, are you codin' vhdl as daily job, or?
05/01 00:21:18 algoboy
no
05/01 00:21:53 algoboy
i'm still a student
05/01 00:23:53 hiyuh
okay, I got it, you should code more to realize why function/procedure
are.
05/01 00:23:58 hiyuh
I'm always codin' vhdl as daily job. no function/procedure is
nightmare for me.
05/01 00:26:15 algoboy
The only benefit i could think of is if you create your own library
so that you can reuse.
05/01 00:31:21 hiyuh
what you're saying looks like "always code by using machine language
in HEX editor" to me.
05/01 00:31:27 hiyuh
or, sounds like "paste same code from existing ones, b/c I don't
like any abstraction."
05/01 00:33:04 drichards
isn't abstraction the whole point of an HDL?
05/01 00:33:37 MatthiasM
I use functions for simple things - like counting leading zeros etc
05/01 00:34:06 algoboy
VHDL is not a programming language so i wouldn't write any machine
code. I use VHDL to describe hardware and and prefer to work on the
RTL level.
05/01 00:34:27 MatthiasM
or procedures for updating more complex counters like this: lsb <=
(lsb + inc) mod X; msb <= msb + (lsb + inc) / X;
05/01 00:35:06 *
hiyuh lolz @ "VHDL is not a programming language"
05/01 00:35:15 MatthiasM
functions are much more flexible as you can decide where to store
the return value when you call it (or use it directly in an IF)
05/01 00:35:51 algoboy
hiyuh: :/
05/01 00:35:59 MatthiasM
procedures can have more then one return value - but you must decide
if the values are passed/returned as signal or variable
05/01 00:36:43 MatthiasM
all functions and procedures are basicly combinatorical logic -
if you need something with a clock - write a new entity
05/01 00:37:22 algoboy
MatthiasM: so why not write combinatorial logic all the time?
05/01 00:37:35 MatthiasM
algoboy: LOL
05/01 00:37:50 algoboy
MatthiasM: instead of a function or procedure
05/01 00:38:29 MatthiasM
the example of the procedure above - is about ~10 lines of code -
I need it in 4 places - calling it takes 1 line of code
05/01 00:38:45 MatthiasM
and it even works when the bit width of the busses are different
for each call
05/01 00:39:42 drichards
which is why I like subprogs
05/01 00:39:55 algoboy
MatthiasM: create the same procedure as a circuit. Use generate to
generate x instances and also use genric.
05/01 00:39:55 drichards
they can react to the act bus width, register width, etc.
05/01 00:39:58 algoboy
the same thing
05/01 00:40:57 MatthiasM
algoboy: I can call a function/procedure inside a clocked process
and inside nested control edges - this makes it very easy to write
complex logic with sequential source code
05/01 00:41:34 MatthiasM
as a designer I want to write code that is A) easy to write B)
easy to read C) easy to change
05/01 00:41:56 MatthiasM
and it's the tools job to create an efficient logic implementation
based on my source code
05/01 00:43:10 MatthiasM
ofcourse you have to be careful to not create to wide logic functions
- which can easily happen if you nest IFs - or check the result of
combinatorical functions (like "IF x+1 == y THEN .... END IF;")
05/01 00:43:43 MatthiasM
algoboy: if you understand these - then you can create a complex
design in a short time
05/01 00:43:51 algoboy
MatthiasM: i prefere to write synthesizable code, targeting low power,
low area. Using higher abstraction you rely much on the synthesizing
tool to do the job for you.
05/01 00:44:10 NULL[0]
...
05/01 00:44:32 MatthiasM
yep - that's why I use Quartus - it's synthesizer is very good -
it's very hard to create more efficient logic by hand
05/01 00:45:54 algoboy
oh, fpga synthesizing is one thing, but i am running asic flow and
it is a huge difference.
05/01 00:46:19 tzanger
MatthiasM: quartus is for atmel, right?
05/01 00:46:27 MatthiasM
Altera
05/01 00:46:30 algoboy
yes
05/01 00:46:35 algoboy
altera
05/01 00:47:32 tzanger
er altera
05/01 00:47:33 tzanger
duh
05/01 00:47:41 tzanger
I knew it was an A. :-)
05/01 00:47:47 algoboy
:p
05/01 00:47:49 *
hiyuh petz NULL[0]. :)
05/01 00:48:09 MatthiasM
algoboy: take a look at some old code: http://pastebin.com/d418ebc0e
05/01 00:49:10 MatthiasM
the production code uses constants instead of hard coded values
ofcourse
05/01 00:52:14 algoboy
MatthiasM: VGA controller?
05/01 00:52:25 MatthiasM
sync generator for DVI
05/01 00:52:34 MatthiasM
(VGA doesn't use DE signal)
05/01 00:52:52 algoboy
oh :)
05/01 00:53:17 MatthiasM
but it started as VGA generator - that's why the clock is called
vga_clk
05/01 00:53:41 hiyuh
rename FTW!!1 :)
05/01 00:54:15 MatthiasM
algoboy: see the splitted counter in line 28 and the compare in line
35 ? the current code uses procedures for increment and a function
for compare
05/01 00:54:20 algoboy
MatthiasM: that is nice code :) no functions or procedures :)
05/01 00:54:45 MatthiasM
that way I can just write "IF compare(row_cnt2, row_cnt1, 12, 805)
then .... end if;"
05/01 00:56:28 MatthiasM
algoboy: eg http://pastebin.com/d7c8c5b34
05/01 00:56:41 MatthiasM
much more readable
05/01 00:57:52 algoboy
yes it is, if you know what the functions does.
05/01 00:58:18 MatthiasM
that's why you can put comments into the VHDL files
05/01 01:00:08 algoboy
:p
05/01 01:00:24 *
hiyuh sticks more popcorn to the microwave.
05/01 01:00:40 *
MatthiasM steals hiyuh's popcorn
05/01 01:01:00 hiyuh
lol
05/01 01:01:16 MatthiasM
:DD