00:00:00 --- log: started forth/10.04.27 00:02:48 --- join: TR2N (email@89.180.190.122) joined #forth 00:06:30 --- join: kar8nga (~kar8nga@jol13-1-82-66-176-74.fbx.proxad.net) joined #forth 00:37:35 --- quit: kar8nga (Read error: Connection reset by peer) 02:25:43 --- quit: nighty__ (Quit: Disappears in a puff of smoke) 02:47:49 --- join: kar8nga (~kar8nga@jol13-1-82-66-176-74.fbx.proxad.net) joined #forth 04:10:58 --- quit: kar8nga (Remote host closed the connection) 04:16:50 --- join: kar8nga (~kar8nga@jol13-1-82-66-176-74.fbx.proxad.net) joined #forth 05:09:48 --- quit: kar8nga (Remote host closed the connection) 05:12:49 Good morning. 05:23:00 --- quit: ygrek (Ping timeout: 245 seconds) 05:36:15 morning ~~ 06:15:53 Deformative: I want to suggest a way for you to compact your code. 06:16:20 You're using 30 bits of your 32-bit cells for opcodes (when the cell contains opcodes). That leaves you the two bits left over. 06:16:27 Let them have meaning like so: 06:16:43 00: Bits [29:0] contain opcodes. 06:17:17 11: Bits [29:0] specify a fully conditionalized slot address (like we discussed yesterday) 06:17:52 01: Bits [29:0] specify two 15-bit *cell* addresses, to be used for subroutine calls. No conditional stuff. 06:18:55 10: Reserved for now. I have ideas but nothing profound. 06:19:29 This lets you do everything we talked about when you need to but also gives you the ability to pack two standard colon definition calls into a cell. 06:19:41 Provided the target words start on a cell boundary. 06:19:53 Your return stack would of course be a full 32-bit entity that could return to any slot. 06:20:50 There're enough reasons to build cell-addressing machine. 06:20:52 Your 15-bit addresses in case 01 are cell addresses, so that gives you short address access to 128kB of code space in that mode. That's a lot in a Forth system. 06:21:17 (If you're targeting Forth.) 07:17:47 --- join: ygrek (debian-tor@gateway/tor-sasl/ygrek) joined #forth 07:36:34 --- join: kar8nga (~kar8nga@jol13-1-82-66-176-74.fbx.proxad.net) joined #forth 07:58:21 --- quit: ASau` (Quit: off) 08:38:01 KipIngram: Yeah, I was thinking something like that, but only if I cannot find a way to make all of these things implicit. 08:45:12 Hmm, it looks like my board only has sdram. D: 08:45:14 No sdram. 08:45:28 Well, I suppose my clock is not every high anyway. 08:47:42 ..maybe there is sram. 08:47:50 I just cannot find the datasheet for it. 08:50:46 Nope, looks like no sram. 08:51:10 Perhaps I will buy a small ship of sram. 09:13:52 Or just interface the sdram. 09:31:27 --- join: alex4nder (~alexander@173-117-160-128.pools.spcsdns.net) joined #forth 09:31:45 hey 09:37:43 KipIngram: Yeah. 09:38:21 It would be fun to put sdram on a couple of the expansion pins, but I will probably just use the sdram. 09:38:27 Erm. 09:38:30 fun to put sram 09:38:32 Key alex4nder. 09:39:25 sup Deformative 09:40:01 Sitting around waiting to take my exams so can get home to play with my fpga. 09:40:21 You? 09:40:51 thinking about building a PCB layout tool 09:41:27 Cool. 09:55:40 Well, I am going to try to get some studying done. 09:55:47 Talk to everyone later. o/ 10:15:49 late 10:20:15 night 10:39:14 --- quit: crcx (Ping timeout: 246 seconds) 10:51:37 KipIngram: I can only address one 16-bit word at a time on my sdram. 10:51:47 That kills my idea of 32 bit on this fpga... 10:52:10 Unless I get some more ram on the expansion headers or something I suppose. 10:53:15 --- quit: kar8nga (Remote host closed the connection) 10:54:03 Well, I have 4 banks, but I think I can only access one per cycle. 11:03:52 --- join: qFox (~C00K13S@5356B263.cable.casema.nl) joined #forth 11:18:13 How much block RAM is inside the FPGA? 11:25:38 56 M9K Embedded Memory Blocks 11:25:44 I have no idea what that means though. 11:26:08 I think that is 9kbits * 56. 11:26:50 Hmm.... 11:28:13 16kb 32 bit words. 11:28:28 ERm 11:28:30 -b 11:32:14 Not a whole lot.. 11:42:37 --- quit: Snoopy_1611 (Read error: Connection reset by peer) 11:49:59 Still enough for a fairly substantial Forth. 11:50:03 Dual ported? 11:51:10 --- join: Snoopy_1611 (Snoopy_161@dslb-084-059-209-008.pools.arcor-ip.net) joined #forth 11:51:22 Doesn't say. 11:51:59 I could build a daughter board with some ram on it for pretty cheap I think. 11:52:42 Even if I just put an additional 4m sdram on there. 11:54:06 What is a pll? 11:55:40 phased locked loop 11:55:56 er phase 11:56:27 Oh, cool. 11:56:37 So that's how I can get up to 100 mhz. 12:25:18 Yes, you can do that inside the chip generally. 12:47:11 --- quit: madwork (Read error: Connection reset by peer) 12:48:05 --- join: madwork (~madgarden@204.138.110.15) joined #forth 12:53:25 --- quit: ygrek (Ping timeout: 245 seconds) 13:09:15 --- quit: gnomon (Ping timeout: 245 seconds) 13:09:34 --- join: gnomon (~gnomon@CPE0022158a8221-CM000f9f776f96.cpe.net.cable.rogers.com) joined #forth 13:18:26 --- join: crcx (~crc@li125-93.members.linode.com) joined #forth 13:34:37 --- quit: alex4nder (Ping timeout: 264 seconds) 13:40:37 --- join: segher (~segher@84-105-60-153.cable.quicknet.nl) joined #forth 13:53:03 --- quit: qFox (Quit: Time for cookies!) 13:56:38 --- quit: Snoopy_1611 (Ping timeout: 246 seconds) 13:59:13 --- join: Snoopy_1611 (Snoopy_161@dslb-084-059-108-130.pools.arcor-ip.net) joined #forth 14:35:53 "Challenging the return address or GOTO reinvented" 14:41:51 * Deformative shrugs. 14:42:23 KipIngram: How would sdram work for my cpu, doesn't it require multiple cycles to fetch data? 14:56:05 Well, yes, that's true; you'd have to use a faster clock for the SDRAM. 14:56:14 How many PLL's does your chip have? 15:00:22 --- quit: Deformative (Ping timeout: 246 seconds) 15:12:38 --- join: Deformative (~8dd435b6@gateway/web/freenode/x-qnbtaexknckcjbbc) joined #forth 15:12:50 Yeah Kip, I will probably need to run my sdram faster like you said. 15:13:44 Actually no, I will just extremely limit the memory available an ddo it all in chip. 15:13:49 :/ 15:14:26 Hopefully I have enough LEs. 15:38:32 --- quit: Deformative (Ping timeout: 252 seconds) 16:10:13 --- quit: Snoopy_1611 () 16:11:35 Deformative: I'm trying to work out a clean, simple way to implement your "keep the cell at the return address prefetched" notion. It's kind of involved. 16:13:21 The primary complexity is that the hardware can only do the prefetch when the memory isn't busy with some other operation. 16:14:38 Take the case of an empty subroutine, for example. 16:17:32 Well, I won't go through that right now; I'm still working out the exact flow. But anyway, in an empty subroutine by the time I get the return address settled into the top of return stack I'm already "on my way back," more or less. 16:17:37 No time to do the prefetch. 16:18:07 So if I can't rely on the prefetched data always being there then I have to keep up with when I can and when I can't, and that gets messy. 16:18:21 I haven't given up - the answer may be simple. 16:20:03 Going to dinner - will be back later. 17:06:08 --- quit: maht (Ping timeout: 240 seconds) 17:11:02 --- join: maht (~maht__@85.189.31.174.proweb.managedbroadband.co.uk) joined #forth 17:12:23 --- join: Deformative (~joe@2002:43c2:b722:4:224:8cff:fe67:e2dd) joined #forth 17:18:16 --- quit: maht (Ping timeout: 246 seconds) 17:24:03 --- join: maht (~maht__@85.189.31.174.proweb.managedbroadband.co.uk) joined #forth 17:27:32 --- join: Snoopy_1611 (Snoopy_161@dslb-084-059-104-236.pools.arcor-ip.net) joined #forth 17:51:27 --- quit: crc (Ping timeout: 276 seconds) 17:52:32 --- join: crc (~charlesch@184.77.185.20) joined #forth 17:54:26 --- quit: maht (Ping timeout: 258 seconds) 17:59:29 --- join: maht (~maht__@85.189.31.174.proweb.managedbroadband.co.uk) joined #forth 18:06:39 Hey all. 18:07:16 hi 18:12:31 --- quit: Deformative (Read error: Operation timed out) 18:15:06 --- join: Deformative (~joe@bursley-185022.reshall.umich.edu) joined #forth 18:36:56 Wow, compilation is so slow. 18:37:05 (quartus verilog) 19:21:00 Yup - FPGA development environments typically *crawl*. 19:23:58 Yeah, it ran faster on the computers I used in the lab though. 19:24:02 And those were old P-4s. 19:24:21 I think it is because I have a newer version of quartus, so there are more optimizations. 19:24:23 But who knows. 19:28:00 My fpga is really not designed to support this 32 bit word idea of mine at all. 19:29:39 I am hoping that since the rest of the cpu is so minimal, I will still manage to make it fit. 19:32:51 Hmm, I can use my sdram for vga. 19:32:53 Neat. 19:41:30 Not designed to support... You mean just because of logic capacity? 19:43:42 Yeah, I am worried about running out of components. 19:43:46 I think it will be a tight fit. 19:44:22 I don't know how the multiplier blocks work, I haven't gotten there yet. 19:44:26 Says I have 54 blocks. 19:44:40 I think that is enough for 32 bit multiplication, but I have no idea. 19:44:51 56 rather. 19:45:17 And I have no idea how many LEs division will take. 19:47:10 I'm not trying to do division at all in hardware. 19:47:40 I want hardware division and multiplication. 19:47:45 Those are rather useful. 19:48:12 Since those have the potential of being bottlenecks in the software. 20:07:06 It's funny, someone I knew had to implement bigint multiplication, he decided to use binary search to do it. 20:07:08 I thought it was clever. 20:07:42 Erm, bigint division. 20:07:48 Not multiplication. 20:07:59 --- quit: uiu (Ping timeout: 252 seconds) 20:41:20 I don't know if I've ever studied division hardware. 20:47:00 I know binary search is used in taking square roots - maybe a modification of that scheme can do general division. 20:50:02 Well, he had multiplication implemented. 20:50:47 So he binary searched to find which bigint * denominator = numerator 20:52:48 How did he handle the remainder? Chances are that wasn't an exact equality. 20:58:16 Well, he binary searched until the range was 1, then he knew it was the lower bound. 21:01:22 Interesting. Just off the cuff I think I'd lean toward a fairly straightforward synthetic division process. 21:02:16 Hm. 21:02:29 I can't remember exactly what I was doing, but sometime in the last year or so I had to do something that involved polynomial divison, in C. 21:02:49 I basically set up synthetic division - it worked quite well. 21:03:07 Hmm, is it still log(n)? 21:03:09 Annoying that I can't remember the details. 21:03:37 Well, binary search obviously has a much larger constant since it is log(n) multiplies rather than log(n) adds. 21:04:26 Sure. I didn't really worry about that part, though; I just wanted the answer in any kind of reasonable time. 21:04:34 Geez - why on earth was I doing that? 21:05:29 Oh - I remember now. 21:06:13 It had to do with a fancy error correcting code algorithm we were using at work. I did it in C just to experiment with the algorithm; it ultimately got an FPGA implementation. 21:06:46 It involved algebra on rings. 21:06:51 Very cool stuff. 21:07:07 Galois fields. 21:07:50 Reed-Solomon coding. That was it. :-) 21:08:09 Absolutely fascinating. 21:10:03 Well, I really need to study for my exams. 21:10:17 Talk to you Thursday. 21:10:20 Good luck. 21:14:13 --- quit: crc (Ping timeout: 264 seconds) 22:41:34 --- join: kar8nga (~kar8nga@jol13-1-82-66-176-74.fbx.proxad.net) joined #forth 23:11:19 --- quit: ASau (Remote host closed the connection) 23:12:13 --- join: ASau (~user@83.69.227.32) joined #forth 23:27:19 --- quit: ASau (Remote host closed the connection) 23:28:19 --- join: ASau (~user@83.69.227.32) joined #forth 23:39:35 --- join: ygrek (debian-tor@gateway/tor-sasl/ygrek) joined #forth 23:59:59 --- log: ended forth/10.04.27