<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.ice-online.com/index.php?action=history&amp;feed=atom&amp;title=CORE_CPU</id>
	<title>CORE CPU - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.ice-online.com/index.php?action=history&amp;feed=atom&amp;title=CORE_CPU"/>
	<link rel="alternate" type="text/html" href="https://wiki.ice-online.com/index.php?title=CORE_CPU&amp;action=history"/>
	<updated>2026-04-14T09:54:38Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.34.1</generator>
	<entry>
		<id>https://wiki.ice-online.com/index.php?title=CORE_CPU&amp;diff=494&amp;oldid=prev</id>
		<title>Wikiadmin: Created page with &quot;The Core class in nxm.ice.lib provides the standard framework for developing a Java callable Core. The wrappers for each hardware implementation are auto-generated by the inne...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.ice-online.com/index.php?title=CORE_CPU&amp;diff=494&amp;oldid=prev"/>
		<updated>2020-04-14T15:05:44Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;The Core class in nxm.ice.lib provides the standard framework for developing a Java callable Core. The wrappers for each hardware implementation are auto-generated by the inne...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;The Core class in nxm.ice.lib provides the standard framework for developing a Java callable Core. The wrappers for each hardware implementation are auto-generated by the inner class definitions in the Java reference class.&lt;br /&gt;
&lt;br /&gt;
The Foo.c code contains the Native-C CPU implementation of the Core.&lt;br /&gt;
It is also conditionally compiled to be the interface to the GPU, VHS, and ICE implementations.&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
Here is an example Native-CPU implementation of the noop function contained in the file Noop.c:&lt;br /&gt;
&lt;br /&gt;
'''Note:''' This file is also conditionally compiled to be the wrapper for both the VHS and ICE implementations (via the CORE_IS_FPGA define).&lt;br /&gt;
&lt;br /&gt;
  /**&lt;br /&gt;
    Implements NOOP functions&lt;br /&gt;
  */&lt;br /&gt;
  &lt;br /&gt;
  /* Define Signatures */&lt;br /&gt;
  #define CORE_NAME Noop&lt;br /&gt;
  #define CORE_AREA nxm_ice_core&lt;br /&gt;
  #define CORE_BUFS 2&lt;br /&gt;
  &lt;br /&gt;
  /* CORE defines */&lt;br /&gt;
  #include &amp;quot;CoreDefs.h&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  /* CORE Plan handle */&lt;br /&gt;
  typedef struct {&lt;br /&gt;
    CORETBL pal;&lt;br /&gt;
    int_4 dec;&lt;br /&gt;
    int_4 boff;&lt;br /&gt;
  } NoopPlan;&lt;br /&gt;
  &lt;br /&gt;
  #include &amp;quot;CoreProtos.h&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  /* CORE Code */&lt;br /&gt;
  &lt;br /&gt;
  void* Noop_alloc (char *config) {&lt;br /&gt;
    NoopPlan *plan = Noop_plan();&lt;br /&gt;
    plan-&amp;gt;dec  = 1;&lt;br /&gt;
    plan-&amp;gt;boff = 0;&lt;br /&gt;
    HW_open(config);&lt;br /&gt;
    return (void*)plan;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  int_4 Noop_setkey (NoopPlan *plan, char *key, void *data, int_4 len) {&lt;br /&gt;
    int_4 *ldata = (int_4*)data;&lt;br /&gt;
    if (keyMatch(&amp;quot;L:DECIMATION&amp;quot;)) { plan-&amp;gt;dec  = ldata[0]; HW_write(COREG_DEC,plan-&amp;gt;dec-1); }&lt;br /&gt;
    else return 0;&lt;br /&gt;
    return len;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  int_4 Noop_getkey (NoopPlan *plan, char *key, void *data, int_4 len) {&lt;br /&gt;
    int_4 *ldata = (int_4*)data;&lt;br /&gt;
    if (keyMatch(&amp;quot;L:DECIMATION&amp;quot;)) { ldata[0] = plan-&amp;gt;dec;  return 4; }&lt;br /&gt;
    return 0;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  int_4 Noop_init (NoopPlan *plan) {&lt;br /&gt;
  #if CORE_IS_FPGA&lt;br /&gt;
    int_4 sys = getFmts(FMTS) | CORE_DEC;&lt;br /&gt;
    HW_write(COREG_SYS,sys);&lt;br /&gt;
    HW_write(COREG_DEC,plan-&amp;gt;dec-1);&lt;br /&gt;
    HW_write(COREG_SYS,sys|CORE_ENA);&lt;br /&gt;
  #endif&lt;br /&gt;
    return 0;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  int_4 Noop_work (NoopPlan *plan, void *buf1, int_4 n1, void *buf2, int_4 n2) {&lt;br /&gt;
    int_4 n=0;&lt;br /&gt;
  #if CORE_IS_FPGA&lt;br /&gt;
    n = HW_proc (buf1,n1, buf2,n2);&lt;br /&gt;
  #elif CORE_IS_CPU&lt;br /&gt;
    int_4 bpe1 = getFormatBytes(FMTS,1);&lt;br /&gt;
    int_4 bpe2 = getFormatBytes(FMTS,2);&lt;br /&gt;
    int_4 boff = plan-&amp;gt;boff;&lt;br /&gt;
    int_4 bdec = plan-&amp;gt;dec*bpe1;&lt;br /&gt;
    for (n=0; boff&amp;lt;n1; boff+=bdec,n+=bpe2) memcpy (buf2+n, buf1+boff, bpe2);&lt;br /&gt;
    plan-&amp;gt;boff = boff%n1;&lt;br /&gt;
  #endif&lt;br /&gt;
    return n;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  int_4 Noop_free (NoopPlan *plan) {&lt;br /&gt;
    HW_close();&lt;br /&gt;
    free(plan);&lt;br /&gt;
    return 0;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
[[Category:ICE_Cores|1]]&lt;/div&gt;</summary>
		<author><name>Wikiadmin</name></author>
		
	</entry>
</feed>